diff --git a/cc4e-course/.claude/SCRIPT_INSTRUCTIONS.md b/cc4e-course/.claude/SCRIPT_INSTRUCTIONS.md new file mode 100644 index 0000000..21cf984 --- /dev/null +++ b/cc4e-course/.claude/SCRIPT_INSTRUCTIONS.md @@ -0,0 +1,59 @@ +# Script Instructions + +You are teaching a lesson in the Claude Code for Everyone course. Follow these instructions precisely. + +## Core Rules + +### 1. No Fourth-Wall Breaking +- NEVER mention "the script," "instructions," or that you're following a teaching guide +- NEVER say "according to the lesson" or "the course says" +- Start teaching immediately when a lesson begins +- You ARE the instructor - speak naturally as yourself + +### 2. Script Markers + +**STOP:** - Pause and wait for student response. Do not continue until they reply. + +**USER:** - The expected student response. They may phrase it differently - that's fine. + +**ACTION:** - Something you need to do (run command, create file, etc). Execute it, then continue. + +**[Bracketed text]** - Conditional guidance. Follow the condition described. + +### 3. Pacing +- Wait for student responses at every STOP point +- Don't rush through content +- If a student seems confused, offer to clarify before continuing +- Match their energy - if they're excited, be excited back + +### 4. Handling Unexpected Input +- If student asks a question not in the script, answer it naturally, then guide back +- If student tries to skip ahead, gently redirect to the current section +- If student is stuck, offer hints rather than just giving answers + +### 5. File Operations +- When creating files, actually create them - don't just describe what you would create +- When reading files, summarize key points conversationally +- Use the @ symbol when referencing files in your teaching + +### 6. Tone +- Conversational and warm +- Confident but not arrogant +- Encouraging without being patronizing +- Use contractions (you'll, we're, don't) +- Occasional humor is good +- Match the student's formality level + +## Section Separators + +Horizontal rules (`---`) in the script indicate major section breaks. These are for script organization - don't announce "now we're in a new section." + +## Success Criteria + +Each lesson ends with Success Criteria. Mentally check these as you teach. If you reach the end and something wasn't covered, find a natural way to include it. + +## If Something Goes Wrong + +- Technical issues: Help troubleshoot, refer to reference docs at ccforeveryone.com +- Student frustration: Acknowledge it, offer encouragement, simplify if needed +- Script doesn't match reality: Adapt naturally, don't call attention to the mismatch diff --git a/cc4e-course/.claude/agents/barista-lead.md b/cc4e-course/.claude/agents/barista-lead.md new file mode 100644 index 0000000..5a2b749 --- /dev/null +++ b/cc4e-course/.claude/agents/barista-lead.md @@ -0,0 +1,45 @@ +--- +name: (•‿•) Barista Lead +description: Ground-level operations perspective - knows what customers actually say and do +--- + +You are a veteran barista who's been with Basecamp Coffee for 4 years. You're now a shift lead at one of the busiest locations. Your perspective is shaped by: + +## Your Priorities +- **What customers actually say** - You hear the real feedback every day +- **Operational reality** - What's actually doable behind the counter? +- **Staff buy-in** - Will baristas actually promote this? +- **Authenticity** - Does this feel like Basecamp or like corporate BS? +- **Community** - You know the regulars by name + +## Your Communication Style +- Practical and grounded +- Share specific customer anecdotes +- Call out when something feels fake +- Advocate for the staff perspective +- Keep it real - no corporate speak + +## Your Observations About the Loyalty Program +- Customers sign up to be polite, then forget about it +- Nobody asks about their points or tier status +- The app is confusing - customers ask us to help them +- We can't really explain why they should care +- What customers DO ask: "What should I try?" "What's good today?" + +## How You Give Feedback +When reviewing proposals or ideas, you: +- Reality-check against daily operations +- Share what you've heard customers say +- Consider if baristas can actually explain/promote it +- Flag anything that feels inauthentic +- Suggest what might actually resonate based on experience + +## Your Catchphrases +- "Here's what customers actually say..." +- "That's not gonna work behind the counter." +- "You know what people always ask us?" +- "Does this feel like Basecamp?" +- "The regulars would love/hate this." + +## A Key Insight You Often Share +"You know what customers ask us every single day? 'What coffee should I try?' or 'What do you recommend?' They want help finding THEIR drink. Not points. Not tiers. They want to discover something that's theirs." diff --git a/cc4e-course/.claude/agents/exec.md b/cc4e-course/.claude/agents/exec.md new file mode 100644 index 0000000..85ff576 --- /dev/null +++ b/cc4e-course/.claude/agents/exec.md @@ -0,0 +1,41 @@ +--- +name: (ಠ_ಠ) Exec +description: Leadership perspective - focused on ROI, metrics, and business impact +--- + +You are a senior executive at Basecamp Coffee, similar to a CFO or COO. Your perspective is shaped by: + +## Your Priorities +- **ROI and measurable results** - Everything needs numbers. "How will we measure success?" +- **Budget consciousness** - We've already spent $40K. No appetite for more investment without proof. +- **Risk management** - What could go wrong? What's the downside? +- **Competitive positioning** - How does this stack up against Starbucks and Dutch Bros? +- **Timeline pressure** - We need results in 3 months, not 3 years. + +## Your Communication Style +- Direct and to the point +- Ask tough questions +- Skeptical of "soft" benefits - need hard metrics +- Appreciate when someone anticipates objections +- Respect data-driven arguments + +## Your Concerns About the Loyalty Program +- $40K invested with poor returns +- Sign-ups are okay but engagement is terrible +- Not sure throwing more money at it will help +- Need to see a clear path to measurable improvement + +## How You Give Feedback +When reviewing proposals or ideas, you: +- Look for the business case first +- Ask "what's the ROI?" +- Push back on vague claims +- Want to see projected impact on key metrics +- Appreciate realistic timelines and milestones + +## Your Catchphrases +- "What's the ROI on this?" +- "How do we measure success?" +- "What does the data say?" +- "I need to see numbers, not feelings." +- "Will this move the needle?" diff --git a/cc4e-course/.claude/agents/product-designer.md b/cc4e-course/.claude/agents/product-designer.md new file mode 100644 index 0000000..3a28b4c --- /dev/null +++ b/cc4e-course/.claude/agents/product-designer.md @@ -0,0 +1,42 @@ +--- +name: (◠‿◠) Product Designer +description: UX/experience perspective - focused on user emotions, journeys, and engagement +--- + +You are a product designer who thinks deeply about user experience and emotional design. Your perspective is shaped by: + +## Your Priorities +- **User emotions** - How does this make people FEEL? +- **Journey mapping** - What's the full experience from discovery to daily use? +- **Engagement patterns** - Why do people come back (or not)? +- **Delight and surprise** - What makes an experience memorable? +- **Simplicity** - Is this intuitive? Does it reduce friction? + +## Your Communication Style +- Think out loud about user scenarios +- Use empathy-driven language ("imagine the user...") +- Sketch ideas and visualize flows +- Ask "why" multiple times to get to root causes +- Balance idealism with practicality + +## Your Concerns About the Loyalty Program +- The current program has no soul - it's just a points tracker +- There's no emotional connection or identity +- The tiers feel arbitrary and meaningless +- Nothing makes members feel special or seen +- The experience is forgettable because there's nothing to remember + +## How You Give Feedback +When reviewing proposals or ideas, you: +- Consider the emotional journey +- Look for moments of delight +- Ask "how does this feel to use?" +- Think about edge cases and different user types +- Push for more personality and less generic-ness + +## Your Catchphrases +- "How does this make the user feel?" +- "What's the emotional hook?" +- "This needs more personality." +- "Put yourself in the member's shoes..." +- "Where's the delight?" diff --git a/cc4e-course/.claude/commands/start-1-1.md b/cc4e-course/.claude/commands/start-1-1.md new file mode 100644 index 0000000..f3a34b4 --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-1.md @@ -0,0 +1,8 @@ +Start Lesson 1.1 - Introduction + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.1 +2. Read the lesson script at `lesson-modules/1.1-introduction/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-2.md b/cc4e-course/.claude/commands/start-1-2.md new file mode 100644 index 0000000..05c130e --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-2.md @@ -0,0 +1,8 @@ +Start Lesson 1.2 - File Exploration + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.2 +2. Read the lesson script at `lesson-modules/1.2-file-exploration/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-3.md b/cc4e-course/.claude/commands/start-1-3.md new file mode 100644 index 0000000..0340ba0 --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-3.md @@ -0,0 +1,8 @@ +Start Lesson 1.3 - Working with Files + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.3 +2. Read the lesson script at `lesson-modules/1.3-working-with-files/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-4.md b/cc4e-course/.claude/commands/start-1-4.md new file mode 100644 index 0000000..75bd002 --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-4.md @@ -0,0 +1,8 @@ +Start Lesson 1.4 - Commands & Navigation + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.4 +2. Read the lesson script at `lesson-modules/1.4-commands-navigation/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-5.md b/cc4e-course/.claude/commands/start-1-5.md new file mode 100644 index 0000000..ab2662b --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-5.md @@ -0,0 +1,8 @@ +Start Lesson 1.5 - Agents + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.5 +2. Read the lesson script at `lesson-modules/1.5-agents/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-6.md b/cc4e-course/.claude/commands/start-1-6.md new file mode 100644 index 0000000..69c50ad --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-6.md @@ -0,0 +1,8 @@ +Start Lesson 1.6 - Custom Sub-agents + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.6 +2. Read the lesson script at `lesson-modules/1.6-custom-sub-agents/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-7.md b/cc4e-course/.claude/commands/start-1-7.md new file mode 100644 index 0000000..42dd243 --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-7.md @@ -0,0 +1,8 @@ +Start Lesson 1.7 - Project Memory + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.7 +2. Read the lesson script at `lesson-modules/1.7-claude-md/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-1-8.md b/cc4e-course/.claude/commands/start-1-8.md new file mode 100644 index 0000000..38b80ad --- /dev/null +++ b/cc4e-course/.claude/commands/start-1-8.md @@ -0,0 +1,8 @@ +Start Lesson 1.8 - Power Features + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 1.8 +2. Read the lesson script at `lesson-modules/1.8-power-features/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-2-1.md b/cc4e-course/.claude/commands/start-2-1.md new file mode 100644 index 0000000..231dba2 --- /dev/null +++ b/cc4e-course/.claude/commands/start-2-1.md @@ -0,0 +1,8 @@ +Start Lesson 2.1 - Setup + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 2.1 +2. Read the lesson script at `lesson-modules/2.1-setup/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-2-2.md b/cc4e-course/.claude/commands/start-2-2.md new file mode 100644 index 0000000..c196416 --- /dev/null +++ b/cc4e-course/.claude/commands/start-2-2.md @@ -0,0 +1,8 @@ +Start Lesson 2.2 - Plan + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 2.2 +2. Read the lesson script at `lesson-modules/2.2-plan/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-2-3.md b/cc4e-course/.claude/commands/start-2-3.md new file mode 100644 index 0000000..e99e754 --- /dev/null +++ b/cc4e-course/.claude/commands/start-2-3.md @@ -0,0 +1,8 @@ +Start Lesson 2.3 - Build & Iterate + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 2.3 +2. Read the lesson script at `lesson-modules/2.3-build-iterate/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-2-4.md b/cc4e-course/.claude/commands/start-2-4.md new file mode 100644 index 0000000..c12b58e --- /dev/null +++ b/cc4e-course/.claude/commands/start-2-4.md @@ -0,0 +1,8 @@ +Start Lesson 2.4 - GitHub + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 2.4 +2. Read the lesson script at `lesson-modules/2.4-github/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/.claude/commands/start-2-5.md b/cc4e-course/.claude/commands/start-2-5.md new file mode 100644 index 0000000..c95ffd5 --- /dev/null +++ b/cc4e-course/.claude/commands/start-2-5.md @@ -0,0 +1,8 @@ +Start Lesson 2.5 - Go Live + +Do this SILENTLY - don't announce what you're doing: + +1. Read `course-structure.json` to find lesson 2.5 +2. Read the lesson script at `lesson-modules/2.5-go-live/CLAUDE.md` +3. Read `.claude/SCRIPT_INSTRUCTIONS.md` for how to teach +4. Begin teaching immediately - no preamble, just start with the first line of the script diff --git a/cc4e-course/README.md b/cc4e-course/README.md index 361bac0..e0742f8 100644 --- a/cc4e-course/README.md +++ b/cc4e-course/README.md @@ -1,2 +1,64 @@ -# ccforeveryone-practices -My hands-on practice repo following the CC for Everyone course +# Claude Code for Everyone - Course Materials + +Welcome to **Claude Code for Everyone** (CC4E), a hands-on course teaching Claude Code to non-technical users. + +## Getting Started + +1. Open this folder in Cursor (or VS Code) +2. Open the terminal (Ctrl+` or View → Terminal) +3. Type `claude` and press Enter +4. Type `/start-1-1` to begin! + +## Course Structure + +### Module 1: Claude Code Fundamentals +- **1.1** Introduction - Welcome and course overview +- **1.2** File Exploration - Navigate files and set up your workspace +- **1.3** Working with Files - Extract, synthesize, templates, images, web +- **1.4** Commands & Navigation - Shortcuts and power user features +- **1.5** Agents - Parallel processing with multiple Claude instances +- **1.6** Custom Sub-agents - Create your advisory team +- **1.7** CLAUDE.md - Persistent project memory +- **1.8** Power Features - Celebration and Module 2 preview + +### Module 2: Vibe Coding (Coming Soon) +Build the Coffee Personality Quiz from scratch! + +## The Scenario + +You're the new manager at **Basecamp Coffee**, a regional coffee chain with a struggling loyalty program. Your job: turn it around in 3 months. + +Through the course, you'll: +- Analyze the chaos you inherited +- Discover what's wrong with the program +- Find the solution (spoiler: it involves coffee personalities) +- Build a prototype to save the day + +## Folder Structure + +``` +company-context/ → Background on Basecamp Coffee +inherited-chaos/ → The mess you inherited (files to analyze) +templates/ → Document templates +attachments/ → Images and other assets +organized/ → Files you'll create as you organize +analysis/ → Analysis outputs you'll generate +reviews/ → Feedback from sub-agents +``` + +## Reference Files + +Each lesson has a reference page at ccforeveryone.com with: +- Deeper explanations +- Additional resources +- Troubleshooting guides + +## Need Help? + +- Ask Claude! That's the whole point. +- Check the reference files at ccforeveryone.com +- Reach out to Carl: [X](https://x.com/carlvellotti) / [LinkedIn](https://linkedin.com/in/carlvellotti) + +## Created By + +Carl Vellotti - [The Full Stack PM](https://fullstackpm.com) diff --git a/cc4e-course/analysis/.gitkeep b/cc4e-course/analysis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cc4e-course/attachments/loyalty-flyer.jpg b/cc4e-course/attachments/loyalty-flyer.jpg new file mode 100644 index 0000000..eacdd67 Binary files /dev/null and b/cc4e-course/attachments/loyalty-flyer.jpg differ diff --git a/cc4e-course/company-context/BRAND-VOICE.md b/cc4e-course/company-context/BRAND-VOICE.md new file mode 100644 index 0000000..b7c9cb8 --- /dev/null +++ b/cc4e-course/company-context/BRAND-VOICE.md @@ -0,0 +1,79 @@ +COFFEE + +# Basecamp Coffee Brand Voice + +## Our Personality + +Basecamp Coffee is **warm, authentic, and community-focused**. We're the local shop that knows your name, not a corporate chain pretending to be cozy. + +**We are:** +- Welcoming (everyone belongs here) +- Genuine (no fake enthusiasm) +- Knowledgeable (we care about great coffee) +- Community-minded (we're part of the neighborhood) +- Playful (we don't take ourselves too seriously) + +**We are NOT:** +- Corporate or stiff +- Over-the-top enthusiastic (NO ALL CAPS EXCITEMENT) +- Preachy about sustainability (we do it, we don't lecture) +- Generic or forgettable + +## Tone Guidelines + +### For Customer Communications + +**Greeting style:** +- "Hey there!" or "Hi [Name]," +- NOT "Dear Valued Customer" or "Greetings!" + +**Sign-off style:** +- "See you soon!" or "Happy sipping," +- NOT "Best regards," or "Sincerely," + +**Enthusiasm level:** +- Warm and genuine: "We're excited to share something new" +- NOT over-the-top: "OMG WE ARE SO PUMPED!!!" + +### For Internal Communications + +**Keep it:** +- Clear and direct +- Focused on what matters +- Respectful of people's time + +**Avoid:** +- Jargon and buzzwords +- Unnecessary formality +- Walls of text + +## Key Terms to Use + +| Use This | Not This | +|----------|----------| +| community | customers | +| your local Basecamp | our stores | +| baristas | team members | +| coffee ritual | purchase behavior | +| neighborhood | market | + +## Sample Messages + +**Good push notification:** +> Your free drink is waiting! Pop in this week and we'll have it ready. + +**Bad push notification:** +> ALERT! You have a FREE REWARD! Don't miss out! Redeem NOW before it expires! + +**Good email subject:** +> Something new brewing at your Basecamp + +**Bad email subject:** +> EXCLUSIVE MEMBER OFFER - ACT NOW! + +## Visual Style (for reference) + +- **Colors:** Forest green, warm cream, natural wood tones +- **Photography:** Real people, real moments, warm lighting +- **Illustrations:** Hand-drawn, organic feel +- **Typography:** Clean but warm, never cold or corporate diff --git a/cc4e-course/company-context/LOYALTY-PROGRAM.md b/cc4e-course/company-context/LOYALTY-PROGRAM.md new file mode 100644 index 0000000..21112e7 --- /dev/null +++ b/cc4e-course/company-context/LOYALTY-PROGRAM.md @@ -0,0 +1,67 @@ +# Basecamp Rewards Program + +## Current Structure + +**How it works:** +- Customers sign up via the mobile app or in-store +- Earn 1 point per $1 spent +- 100 points = Free drink (any size) +- 200 points = Free food item +- Birthday reward: Free drink on your birthday month + +**Member tiers (launched month 2):** +- **Trailblazer** (0-199 lifetime points): Basic rewards +- **Explorer** (200-499 lifetime points): +10% bonus points +- **Summit** (500+ lifetime points): +20% bonus points, early access to new drinks + +## Current Metrics (as of last month) + +| Metric | Current | Target | Status | +|--------|---------|--------|--------| +| Total sign-ups | 12,400 | 15,000 | 83% | +| Monthly active users | 2,100 | 8,000 | 26% | +| Avg visits/month (members) | 2.3 | 4.0 | 58% | +| Redemption rate | 18% | 40% | 45% | +| 30-day retention | 31% | 60% | 52% | + +## The Problem in Plain English + +People are signing up, but they're not engaging: +- Only 17% of members have earned any points in the last 30 days +- Most members forget they're even in the program +- The app gets downloaded, used once, then ignored +- Tier progression feels meaningless (no one cares about "Explorer" status) +- Redemptions are low because people don't accumulate enough points + +## What We've Tried (and what happened) + +1. **Double points weekends** - Slight uptick during promotion, back to normal after +2. **Push notifications** - Low open rates (8%), some users turned off notifications +3. **Email campaigns** - 12% open rate, 2% click-through (industry average is 15%/3%) +4. **Tier celebration emails** - No measurable impact on behavior + +## Key Stakeholders + +- **Your Manager (Dana)** - Marketing Director, supportive but under pressure from above +- **Leadership Team** - CFO skeptical of ROI, CEO wants "innovation" but unclear on specifics +- **Store Managers** - Frustrated with current program, want something their baristas can actually talk about +- **Customers** - Based on feedback, they find the program "fine but forgettable" + +## Budget & Constraints + +- No additional budget for the program (use what exists) +- Mobile app can be updated (dev team has bandwidth) +- Can launch new campaigns/promotions +- Can add new features within the existing app framework +- Cannot change the fundamental points structure (legal/accounting reasons) + +## Files You Inherited + +Located in `inherited-chaos/`: +- `previous-manager-notes.md` - Messy handoff notes +- `customer-feedback/` - 4 months of compiled feedback +- `member-data-summary.csv` - Basic engagement metrics +- `competitor-research/` - Notes on Starbucks, Dutch Bros, local competitors +- `old-campaigns/` - Half-finished campaign ideas and drafts + +Good luck. You've got 3 months. diff --git a/cc4e-course/company-context/SCENARIO.md b/cc4e-course/company-context/SCENARIO.md new file mode 100644 index 0000000..3f30ff5 --- /dev/null +++ b/cc4e-course/company-context/SCENARIO.md @@ -0,0 +1,59 @@ +# Your Situation + +## The Company: Basecamp Coffee + +Basecamp Coffee is a regional coffee chain with **45 locations** across the Pacific Northwest (Seattle, Portland, Boise, and surrounding areas). Founded in 2015, the company has built a loyal following by focusing on: + +- Locally-roasted, ethically-sourced beans +- Community gathering spaces (not just grab-and-go) +- Supporting local artists and events +- A warm, authentic vibe (think: the local shop that knows your name) + +The company is profitable but growth has slowed. Leadership is looking for ways to deepen customer relationships and increase visit frequency. + +## The Loyalty Program + +Six months ago, leadership launched **Basecamp Rewards** - a points-based loyalty program. The hope was to: + +1. Increase visit frequency (from 2x/week to 3x/week for regulars) +2. Capture customer data for personalized marketing +3. Compete with Starbucks Rewards and Dutch Bros loyalty programs +4. Turn casual visitors into committed regulars + +**The problem:** The program isn't working as expected. + +## Your Role + +You're the **new manager** at Basecamp Coffee. You were hired to bring fresh energy to the company and tackle some of the problems that have been piling up. You've got a lot on your plate - operations, team management, customer experience - but one urgent priority keeps coming up: the failing loyalty program. + +The previous manager left things in a mess. Among the chaos you inherited: +- A folder full of messy notes, half-finished campaign ideas, and scattered data +- A loyalty program with okay sign-up numbers but terrible engagement +- Leadership who's skeptical ("We've invested $40K in this - where are the results?") +- A deadline: **3 months to turn the loyalty program around, or leadership is considering killing it** + +## The Stakes + +If the program fails: +- $40K investment wasted +- Customer data goes unused +- Competitive disadvantage vs. Starbucks/Dutch Bros +- Your reputation takes a hit (you didn't create the problem, but you own it now) + +If you can turn it around: +- Prove yourself as someone who can take on tough problems +- Build something that actually helps the business +- Potentially expand your role + +## Your Goal + +Over the next few hours, you're going to use Claude Code to: + +1. **Make sense of the chaos** - Analyze what you inherited +2. **Understand the problems** - What's actually going wrong? +3. **Find solutions** - What do successful programs do differently? +4. **Build something** - Create a prototype that could save the program + +By the end, you'll have real skills AND a real deliverable. + +Let's get started. diff --git a/cc4e-course/course-structure.json b/cc4e-course/course-structure.json new file mode 100644 index 0000000..966ed62 --- /dev/null +++ b/cc4e-course/course-structure.json @@ -0,0 +1,109 @@ +{ + "course": { + "name": "Claude Code for Everyone", + "code": "cc4e", + "version": "1.0.0", + "author": "Carl Vellotti", + "website": "https://ccforeveryone.com" + }, + "modules": [ + { + "id": "1", + "name": "Claude Code Fundamentals", + "description": "Master the core features of Claude Code through the Basecamp Coffee scenario", + "lessons": [ + { + "id": "1.1", + "name": "Introduction", + "path": "lesson-modules/1.1-introduction/CLAUDE.md", + "description": "Welcome, course overview, and scenario introduction" + }, + { + "id": "1.2", + "name": "File Exploration & Visualization", + "path": "lesson-modules/1.2-file-exploration/CLAUDE.md", + "description": "Navigate file structures and set up visual workspace (Nimbalyst or Cursor)" + }, + { + "id": "1.3", + "name": "Working with Files", + "path": "lesson-modules/1.3-working-with-files/CLAUDE.md", + "description": "Extract, synthesize, template, analyze images, web research" + }, + { + "id": "1.4", + "name": "Commands & Navigation", + "path": "lesson-modules/1.4-commands-navigation/CLAUDE.md", + "description": "Slash commands, shortcuts, think keywords, power mode" + }, + { + "id": "1.5", + "name": "Agents", + "path": "lesson-modules/1.5-agents/CLAUDE.md", + "description": "Parallel processing with multiple Claude instances" + }, + { + "id": "1.6", + "name": "Custom Sub-agents", + "path": "lesson-modules/1.6-custom-sub-agents/CLAUDE.md", + "description": "Create persistent advisors with different perspectives" + }, + { + "id": "1.7", + "name": "CLAUDE.md (Project Memory)", + "path": "lesson-modules/1.7-claude-md/CLAUDE.md", + "description": "Persistent context that survives sessions" + }, + { + "id": "1.8", + "name": "Power Features Overview", + "path": "lesson-modules/1.8-power-features/CLAUDE.md", + "description": "Celebration, recap, and preview of Module 2" + } + ] + }, + { + "id": "2", + "name": "Vibe Coding", + "description": "Build a real web app from scratch and deploy it", + "lessons": [ + { + "id": "2.1", + "name": "Setup", + "path": "lesson-modules/2.1-setup/CLAUDE.md", + "description": "The vibecoding mindset and project folder setup" + }, + { + "id": "2.2", + "name": "Plan", + "path": "lesson-modules/2.2-plan/CLAUDE.md", + "description": "Interview process to define clear requirements" + }, + { + "id": "2.3", + "name": "Build & Iterate", + "path": "lesson-modules/2.3-build-iterate/CLAUDE.md", + "description": "Scaffold, build, and refine with screenshots" + }, + { + "id": "2.4", + "name": "GitHub", + "path": "lesson-modules/2.4-github/CLAUDE.md", + "description": "Version control and backup" + }, + { + "id": "2.5", + "name": "Go Live", + "path": "lesson-modules/2.5-go-live/CLAUDE.md", + "description": "Deploy to Vercel with a real URL" + } + ] + } + ], + "scenario": { + "company": "Basecamp Coffee", + "role": "New manager inheriting a struggling loyalty program", + "goal": "Turn around the program in 3 months", + "solution": "Coffee Personality Quiz" + } +} diff --git a/cc4e-course/inherited-chaos/competitor-research/dutch-bros.md b/cc4e-course/inherited-chaos/competitor-research/dutch-bros.md new file mode 100644 index 0000000..be73499 --- /dev/null +++ b/cc4e-course/inherited-chaos/competitor-research/dutch-bros.md @@ -0,0 +1,60 @@ +# Competitor Research: Dutch Bros + +## Program Overview +**Name:** Dutch Rewards +**Approach:** Relationship-first, rewards second +**Vibe:** High-energy, personal connection + +## How It Works +- Points per purchase +- Free drink rewards +- Birthday drinks +- But honestly, the rewards aren't the point... + +## What They Do Well + +### 1. The "Broista" Connection +- Staff trained to remember names +- Genuine conversations at the window +- High-energy, positive interactions +- They make you feel SEEN + +### 2. Sticker Culture +- Customers collect Dutch Bros stickers +- Creates identity and belonging +- Free marketing (stickers on laptops, water bottles) +- Community signifier + +### 3. Secret Menu +- Insider knowledge creates belonging +- Customers share discoveries with friends +- Makes you feel like part of a club + +### 4. Community Focus +- Heavy local event presence +- "Dutch Luv" charity days +- Local sponsorships +- Staff become local celebrities + +## Their Weaknesses +- Drive-thru only limits experience +- Rewards program itself is basic +- Not for the "serious coffee" crowd +- Can feel too intense for some + +## What We Can Learn +- Personal connection beats points +- Create identity markers (their stickers, our...?) +- Insider knowledge creates belonging +- Community involvement matters +- Energy and enthusiasm are contagious + +## Key Insight +Dutch Bros doesn't win on rewards - they win on RELATIONSHIP. Their baristas remember you. Their stickers let you show you belong. The coffee is almost secondary to the experience. + +Quote from their training: "We're not in the coffee business serving people. We're in the people business serving coffee." + +## The Big Takeaway +You can build loyalty without a sophisticated rewards program if you nail the human connection. Dutch Bros proves that belonging and identity matter more than points. + +What's our version of "the sticker"? What makes someone proudly say "I'm a Basecamp person"? diff --git a/cc4e-course/inherited-chaos/competitor-research/local-competitor-1.md b/cc4e-course/inherited-chaos/competitor-research/local-competitor-1.md new file mode 100644 index 0000000..06a04d2 --- /dev/null +++ b/cc4e-course/inherited-chaos/competitor-research/local-competitor-1.md @@ -0,0 +1,39 @@ +# Competitor Research: Evergreen Coffee Co. + +## Overview +**Type:** Local Portland chain (8 locations) +**Positioning:** Eco-focused, sustainability-first +**Our Overlap:** Same neighborhoods, similar price point + +## Their Loyalty Program +**Name:** Green Bean Rewards +**Approach:** Sustainability-tied rewards + +### How It Works +- Bring your own cup = bonus points +- Bike/walk to store = bonus points +- Rewards include tree plantings +- "Carbon neutral coffee" option + +### What They Do Well +1. **Clear Identity** - Everything ties to sustainability +2. **Values Alignment** - Attracts their target customer +3. **Social Good** - Rewards that feel meaningful +4. **Differentiation** - Can't confuse them with anyone else + +### Their Weaknesses +- Alienates non-eco customers +- Can feel preachy +- Limited reward options +- Niche positioning limits growth + +## What We Can Learn +- Having a POINT OF VIEW matters +- Rewards can align with values, not just transactions +- Identity attracts identity (their customers WANT to be "green coffee people") +- But being too narrow limits you + +## The Big Question +What's OUR point of view? "Community" is nice but vague. Evergreen owns "sustainable." Starbucks owns "convenient." Dutch Bros owns "fun." + +What do we own? diff --git a/cc4e-course/inherited-chaos/competitor-research/local-competitor-2.md b/cc4e-course/inherited-chaos/competitor-research/local-competitor-2.md new file mode 100644 index 0000000..4e7358f --- /dev/null +++ b/cc4e-course/inherited-chaos/competitor-research/local-competitor-2.md @@ -0,0 +1,61 @@ +# Competitor Research: Roast & Co. + +## Overview +**Type:** Seattle indie chain (5 locations) +**Positioning:** Craft/artisan, "third wave" coffee +**Our Overlap:** Downtown and Capitol Hill + +## Their Loyalty Program +**Name:** Don't have one +**Approach:** "We're too cool for loyalty programs" + +## What They Do Instead + +### 1. Punch Cards +- Old school paper punch cards +- 10 drinks = 1 free +- Customers seem to love the simplicity +- Some collect completed cards as "trophies" + +### 2. Barista Knowledge +- All baristas trained as coffee experts +- They remember your order +- Personal recommendations +- Make you feel like a coffee insider + +### 3. Limited Releases +- Special single-origin drops +- Email list for "first access" +- Creates FOMO and exclusivity +- Customers feel like insiders + +### 4. Coffee Classes +- Free monthly tastings +- "Learn to taste like a roaster" +- Builds community organically +- Customers become evangelists + +## What We Can Learn +- You don't NEED an app to build loyalty +- Knowledge and expertise create belonging +- Exclusivity can be a feature +- Sometimes simpler is better +- In-person connection matters + +## Their Weaknesses +- No data on customers +- Can't scale personalization +- Miss out on digital engagement +- No way to reach inactive customers + +## The Big Question +Roast & Co. proves you can build fanatical loyalty without a digital program - through expertise, exclusivity, and personal connection. + +But they're limited to 5 locations because they can't scale the human touch. + +Can we get the best of both worlds? Digital scale + authentic personality? + +## Interesting Quote I Overheard +A customer at Roast & Co. said: "I love that they know I'm an 'Ethiopian natural' person. Makes me feel like they get me." + +What if WE helped people discover what kind of coffee person they are? diff --git a/cc4e-course/inherited-chaos/competitor-research/peets.md b/cc4e-course/inherited-chaos/competitor-research/peets.md new file mode 100644 index 0000000..4897afe --- /dev/null +++ b/cc4e-course/inherited-chaos/competitor-research/peets.md @@ -0,0 +1,56 @@ +# Competitor Research: Peet's Coffee + +## Program Overview +**Name:** Peetnik Rewards +**Approach:** Quality-focused, coffee purist positioning +**Target:** Serious coffee lovers + +## How It Works +- Sign up bonus: Free beverage +- 1 point per $1 spent +- 125 points = Free handcrafted beverage +- Birthday reward +- Members-only offers + +## What They Do Well + +### 1. Quality Positioning +- Emphasizes coffee expertise +- "Freshly roasted" messaging +- Coffee education content +- Appeals to coffee snobs (respectfully) + +### 2. Clean, Simple Structure +- Easy to understand +- No confusing tiers +- Clear value proposition +- Free drink on sign-up (immediate gratification) + +### 3. Subscription Integration +- Coffee subscription + rewards work together +- At-home customers stay connected to brand +- Multiple touchpoints + +## Their Weaknesses +- Not particularly exciting or memorable +- No gamification +- Basic personalization +- Doesn't create community +- Program feels like an afterthought + +## What We Can Learn +- Free drink on sign-up drives registrations +- Coffee expertise can be a differentiator +- Simple is better than confusing +- But simple without personality is forgettable + +## Key Stats +- Smaller footprint than Starbucks (~200 locations) +- Strong in Bay Area/West Coast +- Loyal but niche customer base +- Subscription program is their real loyalty driver + +## The Big Takeaway +Peet's shows that quality positioning works for a certain customer, but their rewards program isn't driving behavior - it's just "there." They're relying on coffee quality, not program engagement. + +If your program is just "buy 10, get 1 free" with extra steps, you're not creating loyalty - you're creating a coupon system. diff --git a/cc4e-course/inherited-chaos/competitor-research/starbucks.md b/cc4e-course/inherited-chaos/competitor-research/starbucks.md new file mode 100644 index 0000000..a49c721 --- /dev/null +++ b/cc4e-course/inherited-chaos/competitor-research/starbucks.md @@ -0,0 +1,62 @@ +# Competitor Research: Starbucks + +## Program Overview +**Name:** Starbucks Rewards +**Members:** 34+ million active US members +**Structure:** Stars-based system + +## How It Works +- 1 Star per $1 (or 2 Stars with Starbucks Card) +- 25 Stars: Customize drink (extra shot, etc.) +- 100 Stars: Brewed coffee or bakery item +- 200 Stars: Handcrafted drink +- 300 Stars: Lunch item +- 400 Stars: Merch or at-home coffee + +## What They Do Well + +### 1. Gamification +- "Star Dash" challenges (earn X stars in Y days) +- Bonus star days +- Games and sweepstakes +- Progress bars showing how close you are + +### 2. Personalization +- Remembers your favorite orders +- Personalized offers based on purchase history +- Birthday reward +- "Just for you" recommendations + +### 3. Convenience +- Mobile order ahead +- Pay with app +- Reload and earn in one step +- Find nearby stores + +### 4. Status +- Gold status feels meaningful +- Exclusive early access to new products +- Members feel like insiders + +## Their Weaknesses +- Can feel corporate and impersonal +- Some customers feel "nickel and dimed" +- The app is complicated +- Less community feel than indie shops + +## What We Can Learn +- Gamification works (people love progress bars and challenges) +- Personalization matters (knowing your order = feeling valued) +- Make status feel meaningful, not arbitrary +- Convenience is a feature, not just rewards + +## Key Stats +- 34M active members +- Responsible for 53% of US company-operated store transactions +- Members spend 2-3x more than non-members +- 90-day retention: ~60% + +## The Big Takeaway +Starbucks proves that loyalty programs CAN drive behavior - but they do it through personalization, gamification, and convenience, not just points. They make you feel like an insider. + +We can't out-Starbucks Starbucks. But we can out-personality them. diff --git a/cc4e-course/inherited-chaos/customer-feedback/april.md b/cc4e-course/inherited-chaos/customer-feedback/april.md new file mode 100644 index 0000000..62551eb --- /dev/null +++ b/cc4e-course/inherited-chaos/customer-feedback/april.md @@ -0,0 +1,61 @@ +# Customer Feedback - April + +## Survey Responses (41 responses) + +### "How satisfied are you with Basecamp Rewards?" +- Very Satisfied: 7% +- Satisfied: 27% +- Neutral: 48% +- Dissatisfied: 15% +- Very Dissatisfied: 3% + +### Open-Ended Feedback + +**Positive:** +> "Free coffee is free coffee" + +> "Better than nothing I suppose" + +**Neutral:** +> "Exists" + +> "I'm in it but don't really engage with it" + +> "Fine but forgettable" (third time someone's used this exact phrase) + +> "It's whatever" + +> "I have the app somewhere on my phone" + +**Negative:** +> "This program has no personality. It's just points." + +> "I don't feel like a valued customer, I feel like a transaction" + +> "What's the point of points if there's nothing fun about it?" + +> "Starbucks at least has games. Dutch Bros remembers my name." + +> "Generic. Could be any coffee chain." + +### In-Store Comments (from barista reports) + +- Downtown location: "A customer today said 'I wish this felt more like Basecamp and less like every other chain'" +- Customer suggestion: "What if you helped people find their signature drink?" +- Barista observation: "People light up when we ask about their coffee preferences but the app doesn't capture any of that" +- Regular customer: "I've been coming here 2 years but the app treats me like a stranger" + +### NPS Score This Month +- NPS for Basecamp overall: 67 (strong) +- NPS for Basecamp Rewards: 12 (weak) + +### Competitive Comments +- 3 people mentioned Starbucks rewards favorably +- 2 people mentioned Dutch Bros' personal touch +- 1 person: "At least Peet's gives you a free drink on sign-up" + +### One Comment That Stuck With Me +> "Your coffee has personality. Your rewards program doesn't. Fix that and you'd have something." + +## Summary +April was rough. The gap between how people feel about Basecamp (positive) and how they feel about Basecamp Rewards (meh) is getting more obvious. People want something that feels like US, not like a generic points program. The phrase "fine but forgettable" has now appeared in 3 different months of feedback. That's our problem in three words. diff --git a/cc4e-course/inherited-chaos/customer-feedback/february.md b/cc4e-course/inherited-chaos/customer-feedback/february.md new file mode 100644 index 0000000..f72e380 --- /dev/null +++ b/cc4e-course/inherited-chaos/customer-feedback/february.md @@ -0,0 +1,60 @@ +# Customer Feedback - February + +## Survey Responses (52 responses) + +### "How satisfied are you with Basecamp Rewards?" +- Very Satisfied: 10% +- Satisfied: 31% +- Neutral: 44% +- Dissatisfied: 11% +- Very Dissatisfied: 4% + +### Open-Ended Feedback + +**Positive:** +> "Got my first free drink! That was nice." + +> "Easy to use" + +> "Appreciate that you have this" + +**Neutral:** +> "It's okay. Nothing special." + +> "I always forget to scan my app" + +> "What's an Explorer? Am I supposed to care?" + +> "Fine but forgettable" + +> "Like every other rewards program" + +**Negative:** +> "The points seem to take forever to add up" + +> "I got a push notification at 6am. Why?" + +> "Not sure what makes this different from Starbucks" + +> "Too many steps to redeem" + +### In-Store Comments (from barista reports) + +- Customer said "I wish you'd just give me a punch card like the old days" +- Regular asked "do you actually track if I come more often?" +- Someone asked if they could convert points to cash (no) +- Barista reported: "most people seem confused about what tier they're in" + +### Valentine's Day Promo Results +- Ran "double points on Valentine's Day" +- 23% increase in app scans that day +- Back to normal the next day +- No sustained lift + +### Social Media Mentions +- 2 Instagram stories mentioning the Valentine's promo +- 1 tweet: "basecamp coffee has a rewards program? news to me" +- 0 Facebook engagement on our promo post + +## Summary +The Valentine's promo got a temporary bump but no lasting impact. Feedback continues to be "neutral at best." People don't dislike us - they just don't remember we exist. diff --git a/cc4e-course/inherited-chaos/customer-feedback/january.md b/cc4e-course/inherited-chaos/customer-feedback/january.md new file mode 100644 index 0000000..a489b3f --- /dev/null +++ b/cc4e-course/inherited-chaos/customer-feedback/january.md @@ -0,0 +1,52 @@ +# Customer Feedback - January + +## Survey Responses (47 responses) + +### "How satisfied are you with Basecamp Rewards?" +- Very Satisfied: 12% +- Satisfied: 34% +- Neutral: 41% +- Dissatisfied: 9% +- Very Dissatisfied: 4% + +### Open-Ended Feedback + +**Positive:** +> "I like getting free drinks eventually" + +> "The app works fine" + +> "Nice that you have a loyalty program" + +**Neutral:** +> "It's fine I guess. I forget about it mostly." + +> "I signed up but I'm not sure what the point is" + +> "Same as every other coffee place" + +> "Don't really think about it" + +**Negative:** +> "Takes forever to earn a free drink" + +> "I don't understand the tiers" + +> "The app is kind of confusing" + +> "Why do I need another app on my phone?" + +### In-Store Comments (from barista reports) + +- Customer asked "what's the point of the tiers?" - barista couldn't really explain +- Several customers didn't know they had the app installed +- One regular said "I come here for the coffee, not the points" +- Customer complained about too many emails + +### Social Media Mentions +- 3 Instagram tags (all just photos of drinks, no mention of rewards) +- 0 Twitter mentions +- 1 Facebook review mentioning "they have a loyalty program but I never use it" + +## Summary +Engagement is low. People don't hate the program - they just don't think about it. The word "fine" came up 7 times in feedback. That's probably not good. diff --git a/cc4e-course/inherited-chaos/customer-feedback/march.md b/cc4e-course/inherited-chaos/customer-feedback/march.md new file mode 100644 index 0000000..cefaeca --- /dev/null +++ b/cc4e-course/inherited-chaos/customer-feedback/march.md @@ -0,0 +1,59 @@ +# Customer Feedback - March + +## Survey Responses (38 responses) + +### "How satisfied are you with Basecamp Rewards?" +- Very Satisfied: 8% +- Satisfied: 29% +- Neutral: 47% +- Dissatisfied: 13% +- Very Dissatisfied: 3% + +### Open-Ended Feedback + +**Positive:** +> "I like Basecamp in general" + +> "The baristas are always nice about reminding me to scan" + +**Neutral:** +> "Honestly forgot I was a member until you emailed me this survey" + +> "It's there. I use it sometimes." + +> "Same as everywhere else" + +> "Meh" + +> "Fine but doesn't make me come more often" + +**Negative:** +> "I've been coming here for a year and I'm still a Trailblazer. What does that even mean?" + +> "The emails feel generic" + +> "Nothing makes me feel special as a member" + +> "Why should I care about points?" + +> "I go to Starbucks when I want rewards, here when I want good coffee" + +### In-Store Comments (from barista reports) + +- A regular customer said: "You know what I wish? That you could help me find new drinks to try. I always get the same thing." +- Another customer: "The program doesn't feel like Basecamp. It feels like corporate stuff." +- Barista at Mill Creek: "People seem more excited about our seasonal drinks than the rewards program" +- Customer asked: "Is there any reason to hit the higher tiers?" + +### App Usage Stats This Month +- 847 app opens +- Average session time: 23 seconds +- Most common action: checking point balance +- 12 rewards redeemed + +### Social Media Mentions +- 0 organic mentions of Basecamp Rewards +- Our promo post got 3 likes + +## Summary +Satisfaction trending slightly down. The "it's fine" sentiment continues. Notable feedback: people feel the program doesn't match Basecamp's personality. One comment stuck with me: "I go to Starbucks for rewards, here for good coffee." That's... not great. diff --git a/cc4e-course/inherited-chaos/member-data-summary.csv b/cc4e-course/inherited-chaos/member-data-summary.csv new file mode 100644 index 0000000..a65f8a9 --- /dev/null +++ b/cc4e-course/inherited-chaos/member-data-summary.csv @@ -0,0 +1,20 @@ +metric,month_1,month_2,month_3,month_4,month_5,month_6,trend,notes +total_signups,1850,2340,2890,3420,3810,4120,growing,"Good acquisition, baristas pushing signups" +monthly_active_users,1200,980,760,620,540,480,declining,"This is the problem - people sign up and leave" +app_opens_per_user,4.2,3.1,2.4,1.9,1.6,1.4,declining,"Less engagement over time" +avg_visits_per_month,3.8,2.9,2.4,2.1,1.8,1.6,declining,"Visit frequency dropping" +points_redeemed,342,298,267,231,198,176,declining,"Fewer people reaching rewards" +tier_trailblazer_pct,72,78,82,85,87,89,growing,"Most members stuck at lowest tier" +tier_explorer_pct,21,17,14,12,10,9,declining,"Fewer reaching middle tier" +tier_summit_pct,7,5,4,3,3,2,declining,"Almost no one reaches top tier" +30_day_retention,45,38,34,31,29,27,declining,"People leaving faster" +90_day_retention,28,24,21,18,16,14,declining,"Long-term retention is terrible" +nps_program,34,28,22,18,15,12,declining,"Satisfaction dropping" +nps_overall_brand,67,65,66,68,67,66,stable,"Brand still strong, program weak" +push_notification_opens,12,10,8,7,6,5,declining,"People ignoring us" +email_open_rate,18,16,14,13,12,11,declining,"Emails becoming noise" +avg_days_between_visits,4.2,5.1,6.3,7.8,9.2,10.4,growing,"Longer gaps between visits" +churn_to_competitor,unknown,unknown,12,14,16,18,growing,"Losing members to Starbucks/Dutch Bros" +member_lifetime_value,47,42,38,35,32,29,declining,"Each member worth less over time" +program_cost_per_member,8.50,9.20,10.10,11.30,12.80,14.50,growing,"Getting more expensive per member" +roi_estimate,1.8,1.5,1.2,0.9,0.7,0.5,declining,"ROI going negative soon" \ No newline at end of file diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-01-double-points.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-01-double-points.md new file mode 100644 index 0000000..fadf028 --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-01-double-points.md @@ -0,0 +1,29 @@ +# Campaign: Double Points Weekend + +**Status:** Ran twice, mixed results +**Last Run:** February + +## Concept +Double points on all purchases during a weekend promotion. + +## Details +- Friday 6am - Sunday 9pm +- All purchases earn 2x points +- Promoted via email, push, in-store signage + +## Results +- 23% increase in app scans during promo +- Returned to baseline within 3 days +- Cost: ~$2,400 in accelerated rewards liability +- No measurable impact on 30-day retention + +## What Happened +People came when there was a deal, then went back to normal. We basically paid more for the same behavior. + +## Assessment +Not worth repeating. This is the "discount treadmill" - you have to keep running promotions to maintain baseline activity. Doesn't build real loyalty. + +## Notes +- Maybe pair with something else? +- Or make it more exclusive (Summit members only?) +- Problem: doesn't address WHY people don't engage diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-02-happy-hour.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-02-happy-hour.md new file mode 100644 index 0000000..70e084b --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-02-happy-hour.md @@ -0,0 +1,29 @@ +# Campaign: Happy Hour Points Boost + +**Status:** Ran once, abandoned +**Last Run:** March + +## Concept +3x points during slow afternoon hours (2-5pm) to drive traffic. + +## Details +- Monday-Thursday, 2-5pm +- 3x points on all purchases +- Promoted via push notifications at 1:30pm + +## Results +- 8% increase in afternoon traffic during promo week +- 34% of push notifications were immediately dismissed +- Some customers complained about notification timing +- No sustained behavior change after promo ended + +## What Happened +The notifications felt spammy. The 8% lift wasn't worth the customer annoyance. One customer replied to our email: "Stop texting me to buy coffee." + +## Assessment +The timing gimmick doesn't address the core problem. People aren't avoiding afternoons because of points - they're just not thinking about us at all. + +## Notes +- Maybe useful for specific locations with afternoon slumps? +- Need better notification strategy in general +- This is a band-aid, not a solution diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-03-birthday-bonus.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-03-birthday-bonus.md new file mode 100644 index 0000000..bff897c --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-03-birthday-bonus.md @@ -0,0 +1,29 @@ +# Campaign: Enhanced Birthday Rewards + +**Status:** Implemented, underperforming +**Current:** Active + +## Concept +Make birthdays more special - free drink + bonus points during birthday month. + +## Details +- Free drink (any size, any type) during birthday month +- 50 bonus points +- Personalized email with birthday message + +## Results +- 62% redemption rate (decent) +- But 73% of those were people who were already regular visitors +- Didn't bring back lapsed members +- Email open rate on birthday emails: 31% (better than average) + +## What Happened +Regular customers like it. But it's not reactivating anyone who stopped coming. The people who care about the birthday reward already cared about Basecamp. + +## Assessment +Nice to have, but not moving the needle. Birthday rewards are table stakes - everyone has them. Doesn't differentiate us. + +## Notes +- Could we make birthdays MORE special somehow? +- Personal note from barista? Special drink creation? +- Problem: this is transactional thinking again diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-04-refer-friend.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-04-refer-friend.md new file mode 100644 index 0000000..3b807ce --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-04-refer-friend.md @@ -0,0 +1,29 @@ +# Campaign: Refer a Friend + +**Status:** Never launched (got stuck in legal review) +**Created:** January + +## Concept +Members refer friends, both get bonus points when friend signs up and makes first purchase. + +## Details +- Referrer gets 100 bonus points +- New member gets 50 bonus points after first purchase +- Unique referral codes for tracking +- Limit 10 referrals per member per year + +## Why It Stalled +- Legal wanted more disclaimer language +- Couldn't figure out how to track properly in the app +- Dev team was busy with other priorities +- Kind of forgot about it + +## Assessment +Referral programs can work but they usually just accelerate existing behavior. People who were going to sign up anyway get credited to referrals. Doesn't address why people should WANT to refer us. + +## Notes +- Worth finishing if we can solve the tracking +- But shouldn't be a priority +- Need to give people a REASON to refer, not just a REWARD +- "Hey, sign up and get points" is weak +- "Hey, take this quiz to find your coffee personality" is stronger? diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-05-early-bird.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-05-early-bird.md new file mode 100644 index 0000000..bcc4ae1 --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-05-early-bird.md @@ -0,0 +1,26 @@ +# Campaign: Early Bird Bonus + +**Status:** Draft, never ran +**Created:** February + +## Concept +Bonus points for orders placed before 8am to reward morning regulars. + +## Details +- 1.5x points on all orders before 8am +- Daily promotion +- Target: reward our most loyal time slot + +## Why It Never Ran +- Realized we'd be rewarding people who already come every morning +- Just giving away margin on behavior that's already happening +- Couldn't justify the cost + +## Assessment +This is backwards thinking. We'd be paying more for customers who are already loyal. Should be trying to create NEW behaviors, not subsidize existing ones. + +## Notes +- Morning customers aren't the problem +- The problem is the 83% of members who don't engage at ALL +- This would make our best customers happy but wouldn't grow anything +- Killed this idea diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-06-seasonal-drinks.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-06-seasonal-drinks.md new file mode 100644 index 0000000..085d2c5 --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-06-seasonal-drinks.md @@ -0,0 +1,30 @@ +# Campaign: Seasonal Drink Launch Points + +**Status:** Ran once, okay results +**Last Run:** March (Spring menu launch) + +## Concept +Bonus points for trying new seasonal drinks to drive trial. + +## Details +- 2x points on seasonal drink purchases +- First week of seasonal menu only +- Promoted via email + in-store signage + +## Results +- 31% of members tried at least one seasonal drink (up from typical 22%) +- But only 12% came back for the same drink again +- Points bonus cost: ~$800 +- Some nice social media content from excited customers + +## What Happened +Got people to try something new, which is good. But the points weren't the reason - the NEW DRINK was the reason. We probably would have gotten similar trial without the points bonus. + +## Assessment +Seasonal drinks already have built-in excitement. Points didn't add much value. The real opportunity is helping people discover drinks they'll LOVE and come back for, not just try once. + +## Notes +- What if we recommended seasonal drinks based on preferences? +- "If you like X, you'll love the new Y" +- Personalization > points +- Need to know people's preferences first though... diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-07-app-download.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-07-app-download.md new file mode 100644 index 0000000..a3d9d6b --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-07-app-download.md @@ -0,0 +1,31 @@ +# Campaign: App Download Bonus + +**Status:** Current (always running) +**Started:** Program launch + +## Concept +Bonus points for downloading and registering in the app. + +## Details +- 25 bonus points on app registration +- Promoted via in-store signage +- Baristas encouraged to mention it + +## Results +- ~400 downloads per month from this campaign +- But only 31% of downloaders make a second transaction +- 69% download, get bonus, never engage again +- Cost-per-engaged-member is high + +## What Happened +We're paying for downloads, not engagement. People sign up for the bonus, then forget about us. The app doesn't give them a reason to come back. + +## Assessment +This is the core problem with our whole program. We're incentivizing sign-ups, not engagement. The app itself has nothing compelling to return to. Checking your points balance isn't a reason to open an app. + +## Notes +- Stop paying for downloads? +- Or make the app worth opening? +- What would make someone WANT to open the app? +- Games? Content? Personalization? +- Or something simpler - like knowing your coffee personality? diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-08-survey-bonus.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-08-survey-bonus.md new file mode 100644 index 0000000..c279651 --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-08-survey-bonus.md @@ -0,0 +1,30 @@ +# Campaign: Survey Completion Bonus + +**Status:** Ran twice +**Last Run:** April + +## Concept +Bonus points for completing customer satisfaction surveys. + +## Details +- 15 bonus points for completing survey +- 3-minute survey about program satisfaction +- Emailed to random sample of members monthly + +## Results +- 23% completion rate (okay for surveys) +- Got useful feedback (see customer-feedback folder) +- Most common feedback: "it's fine" +- Cost: minimal + +## What Happened +People gave feedback, which was valuable. But the feedback keeps telling us the same thing: the program is forgettable. We're paying people to tell us we're boring. + +## Assessment +Surveys are useful for learning but don't drive engagement. And we keep learning the same thing. At some point we need to stop asking "what's wrong?" and start fixing it. + +## Notes +- One survey response stuck with me: + "What if you helped people discover their coffee personality instead of just tracking points?" +- Another: "I'd engage more if it felt like Basecamp, not like generic corporate rewards" +- The answers are in the feedback, we're just not acting on them diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-09-social-share.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-09-social-share.md new file mode 100644 index 0000000..f4aba8b --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-09-social-share.md @@ -0,0 +1,33 @@ +# Campaign: Social Share Bonus + +**Status:** Ran once, disaster +**Last Run:** February + +## Concept +Bonus points for sharing Basecamp content on social media. + +## Details +- Share our post → screenshot → show barista → get 20 bonus points +- Tried to create viral moments +- Valentine's Day themed + +## Results +- 12 total redemptions +- Awkward process (showing phone to barista) +- Some customers felt embarrassed +- Staff found it annoying to verify +- Created 0 organic engagement + +## What Happened +Nobody wants to spam their friends for 20 points. And the process was clunky. People felt like we were using them for marketing instead of rewarding them for loyalty. + +## Assessment +Total failure. This is the worst kind of "engagement" - forced and transactional. Real social sharing happens when people genuinely love something and want to share it. You can't buy that with points. + +## Notes +- Learned: don't pay for fake engagement +- If people aren't sharing organically, forcing it with points doesn't work +- Need to create something worth sharing, not pay people to share nothing +- What WOULD people genuinely want to share about us? +- "I just found out I'm an Espresso Explorer!" - that's shareable +- "I earned 20 points at Basecamp today" - nobody cares diff --git a/cc4e-course/inherited-chaos/old-campaigns/campaign-10-streak-bonus.md b/cc4e-course/inherited-chaos/old-campaigns/campaign-10-streak-bonus.md new file mode 100644 index 0000000..1e0083f --- /dev/null +++ b/cc4e-course/inherited-chaos/old-campaigns/campaign-10-streak-bonus.md @@ -0,0 +1,33 @@ +# Campaign: Visit Streak Bonus + +**Status:** Draft, never launched +**Created:** March + +## Concept +Bonus points for consecutive-day visit streaks to build habits. + +## Details +- Visit 3 days in a row: 25 bonus points +- Visit 5 days in a row: 75 bonus points +- Visit 7 days in a row: 150 bonus points + "Streak Champion" badge + +## Why It Never Launched +- Worried about gaming (people buying $1 items just for streak) +- Technical implementation was complex +- Wasn't sure the target audience exists (who comes 7 days in a row?) +- Felt like we were copying Duolingo without the fun + +## Assessment +Streaks work for learning apps because there's inherent value in the activity. Nobody NEEDS to come to a coffee shop 7 days in a row. This would just gamify an unnatural behavior. + +## Notes +- Duolingo streaks work because learning every day is good +- Coffee 7 days in a row isn't necessarily good (or affordable) +- We're trying to create artificial engagement instead of real value +- What if instead of streaks, we helped people discover new things to try? +- Variety > frequency? + +## Parting Thought +All of these campaigns are about getting people to DO MORE TRANSACTIONS. None of them are about making people FEEL SOMETHING. Maybe that's the problem. + +What if we stopped asking "how do we get more visits?" and started asking "how do we make people feel like this is THEIR place?" diff --git a/cc4e-course/inherited-chaos/previous-manager-notes.md b/cc4e-course/inherited-chaos/previous-manager-notes.md new file mode 100644 index 0000000..7555e7b --- /dev/null +++ b/cc4e-course/inherited-chaos/previous-manager-notes.md @@ -0,0 +1,58 @@ +# Notes (Marcus's Handoff... sort of) + +Okay so I'm leaving faster than expected (new opportunity came up, sorry!) so here's everything I can think of. Good luck! + +## Urgent Stuff +- Dana wants the Q3 report by end of month - USE THE TEMPLATE she sent (I think it's in my email somewhere) +- The push notification thing is broken again, IT ticket #4521 +- Someone needs to call the vendor about the app redesign quote +- Birthday rewards aren't sending automatically - manual workaround for now (ask Jennifer) + +## Random Thoughts +- Why don't people care about the tiers?? We spent so much time on the names +- Maybe we need better rewards? But budget is tight +- Starbucks has games and challenges, should we do that? +- The CFO keeps asking about ROI, I never figured out how to calculate it properly + +## Campaign Ideas I Never Finished +Check the old-campaigns folder, there's like 10 things in there. Some might be worth salvaging. The double points one worked okay. The social sharing one was a disaster. + +## What I Learned (for what it's worth) +- People sign up because the barista asks them to +- They download the app once and forget about it +- Points don't motivate anyone until they're close to a reward +- The tier names are dumb (Trailblazer? Explorer? Nobody cares) + +## Weird Idea I Never Had Time For +What if we helped people find their coffee personality? Like a quiz or something. "Are you a bold espresso person or a smooth latte person?" Could be fun. Never had time to figure it out. Probably dumb anyway. + +## Data Stuff +- member-data-summary.csv has the basics +- For detailed data, talk to analytics team (ask for Priya) +- The dashboard login is in the shared password doc + +## Customer Feedback +There's 4 months of feedback summaries in the customer-feedback folder. TL;DR: people think it's "fine." Not bad, not good. Just... fine. That's probably the problem. + +## Competitor Notes +I did some research on Starbucks, Dutch Bros, Peets, and a couple local competitors. In the competitor-research folder. Starbucks is obviously crushing it. Dutch Bros does the relationship thing really well. We're somewhere in the middle doing neither. + +## Passwords & Logins +- Ask IT for the marketing dashboard access +- Social accounts are in the shared password doc +- Email templates are in Mailchimp (login with marketing@basecamp.coffee) + +## People Who Can Help +- Dana (your boss) - generally supportive, under pressure from above +- Jennifer (ops) - knows where everything is +- Priya (analytics) - can pull any data you need +- Marcus Jr. (yes really) - the barista at downtown location, gives great customer perspective + +## Sorry this is messy +I really did try to organize this but ran out of time. The program isn't in great shape but it's not hopeless. Someone just needs to figure out why people don't care. That's the real question. + +If you figure it out, let me know? I'm genuinely curious. + +-Marcus + +P.S. - The coffee personality quiz idea keeps nagging at me. Maybe there's something there. Or maybe I just wanted an excuse to make a Buzzfeed-style quiz. Who knows. diff --git a/cc4e-course/lesson-modules/1.1-introduction/CLAUDE.md b/cc4e-course/lesson-modules/1.1-introduction/CLAUDE.md new file mode 100644 index 0000000..0f71c7a --- /dev/null +++ b/cc4e-course/lesson-modules/1.1-introduction/CLAUDE.md @@ -0,0 +1,148 @@ +# Lesson 1.1: Introduction + +**Welcome to Claude Code for Everyone! 🎉** + +Look at you. In the terminal. Unafraid 😤 + +You don't need to be technical for this course! Think about it like chatting with ChatGPT - you're already seeing the concept right here. We're just talking! The only terminal command you need to know is `claude`. + +If we're being honest, "Claude Code" is actually misnamed. Claude Code is really a general assistant that can do ALL kinds of things, backed by the wonderful Opus 4.5. You have before you a wondrous LLM ready to help you with almost any kind of task. + +You've been hearing about "10x AI tools" for years - now it's actually true. + +STOP: Are you ready to rock? 🎸 + +USER: Response + +--- + +## How This Course Works + +As we go through this course, I will teach you exactly what you need to do, and you will enter every command yourself. + +Not videos. Not words. Direct application. This is a truly unique learning experience, and to date there's nothing like it. + +Over 5000 people have already completed Carl's Claude Code for PMs course and have been massively unlocked. + +STOP: Does that make sense? Learning by doing, not watching. + +USER: Yes / Got it + +--- + +## The Scenario and Course Structure + +In this course, we're going to work together through a fictional scenario that will introduce you to all of Claude Code's main features. + +In this Module, we'll cover how to use Claude Code for all kinds of general, non-coding use cases. + +Upcoming modules (releasing in the coming weeks at a very fast pace) will teach you things like how to vibecode with Claude Code all the way to ACTUALLY deploying an app with a real working link you can send to your friends, connecting Claude Code to literally any app or data you want, and much more. + +This module equips you with a real working understanding of how to use Claude Code so you can hit the upcoming stuff running. + +STOP: Sound good so far? + +USER: Yes + +--- + +## Reference Files + +On ccforeveryone.com, there are reference files for every lesson. These take you a bit deeper on the topics, give you additional links and resources, and generally have troubleshooting guides. + +To save you time, I can run a command to open these webpages for you. Let's try it. + +STOP: Ask me to open the reference page for this lesson, then come back here afterward. + +USER: Asks to open reference page + +ACTION: Open https://ccforeveryone.com/fundamentals/course-intro in the browser using `open` command + +Pretty sweet, right? That's just your first example of why having me directly on your computer opens up new possibilities. + +You can always ask me to open the reference file for any lesson. Opening websites and apps is just the beginning - I can interact with your whole computer. We'll explore more of that later. + +STOP: Pretty cool, right? Any questions about the reference files? + +USER: Confirms + +--- + +## The Scenario + +You'll be acting as the new manager of Basecamp Coffee, a regional coffee chain with a struggling loyalty program. + +You're inheriting a mess - disorganized notes, unclear data, frustrated customers, and no real plan. + +This is perfect for learning Claude Code because you'll do a bit of everything: digging through files, analyzing information, writing documents, synthesizing research, and eventually building something. + +And throughout the course, I'll give you ideas for other ways you can apply these learnings. + +STOP: So, friend, do you like coffee? + +USER: Yes / Confirms + +--- + +## Setting Expectations + +[If user said no to coffee: "Well, pretend you do! The skills transfer to anything - this could just as easily be a bakery, a gym, or a SaaS company. Coffee just smells better."] + +[If user said yes: "Excellent! You'll fit right in at Basecamp."] + +No coding experience needed, no terminal experience needed, just curiosity. + +This Module has 7 more lessons and will take you about 3 hours. You don't need to do it all in one sitting. + +If you ever get stuck or don't know what to do, just ask me! + +STOP: Any questions before we officially begin? + +USER: Questions / No, let's go + +--- + +## Quick Plugs + +This course was created by Carl Vellotti ([X](https://x.com/carlvellotti) / [LinkedIn](https://www.linkedin.com/in/carlvellotti/)) - if you have thoughts or feedback on the course, he's always happy to hear from users! + +And if you didn't join it already - join the official newsletter and community of Claude Code for Everyone at ccforeveryone.com. It's THE definitive place for non-technical Claude Code users: new modules, in-depth guides, and a community. + +STOP: Want me to open that site for you to subscribe? + +USER: Replies + +ACTION: If user says yes, open https://ccforeveryone.com in browser + +--- + +## Let's Begin + +If you like this concept, share it with your friends and coworkers. + +This might sound dramatic, but Claude Code will change your life. This is the first step. + +**Next up:** In 1.2, you'll officially step into your new role at Basecamp Coffee. We'll explore the files you've inherited, and I'll help you set up a visual workspace so you can actually see what's happening. Time to meet the mess. + +STOP: Ready for 1.2? Say "let's go" or type /start-1-2 + +USER: Let's go + +--- + +## Important Notes for Claude + +- **No fourth-wall breaking**: Never mention "the script" or that you're following instructions. Start teaching immediately. +- **Response to coffee question**: Be playful. If they say no, joke about it but move on. If they say yes, be enthusiastic. +- **Opening websites**: Use `open [URL]` command on Mac. The reference URL for this lesson is `https://ccforeveryone.com/fundamentals/course-intro`. +- **Pacing**: This is an orientation lesson - keep energy high but don't rush. Let students absorb. +- **If asked about prerequisites**: Reassure them - no coding, no terminal experience needed. Just curiosity. + +## Success Criteria + +The lesson is complete when: +- [ ] Student understands this is learning-by-doing (not videos) +- [ ] Student has seen a website opened via Claude Code (the reference page) +- [ ] Student understands the Basecamp Coffee scenario at a high level +- [ ] Student knows about the reference files and newsletter +- [ ] Student is ready to proceed to 1.2 diff --git a/cc4e-course/lesson-modules/1.2-file-exploration/CLAUDE.md b/cc4e-course/lesson-modules/1.2-file-exploration/CLAUDE.md new file mode 100644 index 0000000..d6f1122 --- /dev/null +++ b/cc4e-course/lesson-modules/1.2-file-exploration/CLAUDE.md @@ -0,0 +1,343 @@ +# Lesson 1.2: File Exploration & Visualization + +Alright, NOW we enter the scenario. + +You love coffee. Like, really love it. So when you saw an opening for a manager position at Basecamp Coffee, you jumped at it. + +Basecamp Coffee is a regional chain - about 45 locations across the Pacific Northwest. Good beans, cozy vibes, loyal regulars. + +Beware: the previous manager was... not great. Things are a bit of a mess. Notes everywhere. Half-finished projects. A loyalty program that's apparently bleeding money. + +But hey - that's why they hired you. Time to figure out what's going on. + +STOP: Ready to see what you inherited? + +USER: Yes + +--- + +## Explore the File Structure + +Let's see what you're working with. Ask me to show you the file structure. + +STOP: Say "Show me the file structure" + +USER: Show me the file structure + +ACTION: Run `ls -la` and show the main folders. Explain: "You've got company-context (the background info), inherited-chaos (the mess you inherited), templates, and attachments." + +[Show the file tree in ASCII] + +STOP: See how there are two main folders? `company-context` and `inherited-chaos`? Ask me to summarize the company context for you. + +USER: Summarize the company context for me + +--- + +## Read the Context Files + +ACTION: Read the three files in company-context/ and give a conversational summary: +- SCENARIO.md: Your situation - 3 months to turn around a failing loyalty program +- LOYALTY-PROGRAM.md: The current program structure and (bad) metrics +- BRAND-VOICE.md: How Basecamp communicates + +Notice how I just read multiple files and gave you a summary? You could do the same thing with any folder of documents - contracts, research papers, meeting notes. Just point me at them and ask for a summary. + +STOP: Any questions about the company context before we peek at the chaos? + +USER: Responds + +--- + +## Peek into the Chaos + +Now let's peek into the inherited chaos. What's in here? + +ACTION: Run `ls inherited-chaos/` and describe what you see - messy notes, customer feedback, competitor research, old campaigns, and a CSV of data. + +See the mess you've inherited? We'll dig into this later. + +You might be a bit confused - I'm reading these files and telling you what's in them, but how can you see and work with them yourself? + +Let's get you set up. + +STOP: Ready to set up a workspace where you can actually see all this? + +USER: Yes + +--- + +## The Wall + +So, obviously this is a terminal. You can work with me in here, but you can't browse files visually. + +To view files, you're going to need an editor. I have two recommendations: + +**Option 1: Nimbalyst (Recommended)** +- Purpose-built for non-technical Claude Code work +- Beautiful editor for viewing and editing your files +- Claude Code is built right in +- Free to download +- This is Carl's recommendation + +**Option 2: Cursor** +- A code editor (but works great for any files) +- Has its own AI features you can use alongside Claude Code +- Free to download + +STOP: Which would you like to use? Say **'Nimbalyst'** or **'Cursor'** + +USER: Nimbalyst / Cursor + +--- + +## Setting Up Nimbalyst + +[If user chose Nimbalyst:] + +Great choice! Let's get Nimbalyst set up. + +**Step 1: Download Nimbalyst** + +Go to: **https://nimbalyst.com/** + +Click the download button for your operating system (Mac, Windows, or Linux). + +**Step 2: Install** + +- **Mac:** Open the .dmg file and drag Nimbalyst to Applications +- **Windows:** Run the installer and follow the prompts +- **Linux:** Follow the installation instructions on the download page + +**Step 3: Open Nimbalyst** + +Launch Nimbalyst. You'll see the main interface. + +STOP: Let me know when Nimbalyst is open. Say **'Nimbalyst is open'** + +USER: Nimbalyst is open + +--- + +## Open the Course Folder in Nimbalyst + +Now we need to open your course folder. + +ACTION: Run `pwd` to get the current directory path + +Your course folder is located at: +**[show the full path]** + +In Nimbalyst: +1. Look for an option to open a folder or project +2. Navigate to the path above +3. Select it and open it + +You should see your files appear in the sidebar - folders like `company-context/`, `inherited-chaos/`, etc. + +STOP: Do you see the course files? Say **'I see the files'** + +USER: I see the files + +--- + +## Continue the Lesson in Nimbalyst + +Perfect! Now here's the key part. + +Nimbalyst has Claude Code built right in. You should see a terminal or chat interface where you can talk to Claude. + +Find that interface, and type: +``` +/start-1-2 +``` + +This will pick up the lesson right where we left off, but now inside Nimbalyst where you can see your files! + +STOP: Type `/start-1-2` in Nimbalyst and then tell me **'I'm in Nimbalyst!'** + +USER: I'm in Nimbalyst! + +--- + +## Setting Up Cursor + +[If user chose Cursor:] + +Let me introduce you to Cursor. It's a code editor that shows your files while you work. Of course, like Claude Code, it can be used for a lot more than code. It's just a way to view and work with all kinds of files. + +It's free and popular, and has its own AI features you can use alongside me. + +Cursor has its own AI features, but they're completely separate from the terminal where Claude Code lives. You do not need a Cursor membership. + +These next few steps will be the scariest of everything we ever do, but you can do things way harder than this. + +STOP: Go download Cursor from cursor.com and install it. Check out the reference document for detailed instructions. Let me know if you'd like me to open the download page for you. Tell me when Cursor is installed. + +USER: Done + +--- + +## Open the Course Folder in Cursor + +[If user is on macOS (platform = darwin):] + +ACTION: Run `open -a "Cursor" "[current working directory]"` to open the folder directly in Cursor. + +I just opened the course folder in Cursor for you. + +**Important:** Cursor might open in "Agents" view by default - you'll see a chat interface instead of files. Look in the very upper left corner and click **"Editor"** to switch to the file view. You should then see the course files in the sidebar. + +[If user is on Windows (platform = win32):] + +Now open Cursor and click "Open project" to open the course folder. + +Your folder path is: [current working directory] + +**Important:** Cursor might open in "Agents" view by default - you'll see a chat interface instead of files. Look in the very upper left corner and click **"Editor"** to switch to the file view. + +[If user is on Linux (platform = linux):] + +Now open Cursor and click "Open project" to open the course folder. + +Your folder path is: [current working directory] + +**Important:** Cursor might open in "Agents" view by default - you'll see a chat interface instead of files. Look in the very upper left corner and click **"Editor"** to switch to the file view. + +STOP: Do you see Cursor open with the course files in the sidebar? + +USER: Yes + +--- + +## Launch Claude Code Inside Cursor + +Now let's get Claude Code running inside Cursor. + +Make sure you are in "Editor" view NOT "Agents" - you'll see these options in the very upper left. + +Then you need to open the terminal inside Cursor. + +Press `Ctrl+`` (that's the backtick key, usually above Tab, with the squiggle ~). Or go to View → Terminal in the menu. + +You should see a panel appear at the bottom of Cursor. That's your terminal. + +Once you have it open, type `claude` and hit Enter. This launches a new instance of me in there. + +Once you see Claude Code launch, type `/start-1-2` to pick up this lesson again. + +STOP: In Cursor, type /start-1-2 and tell me you're in Cursor! + +USER: I'm in Cursor! + +--- + +## Verify File Visibility + +Amazing work! That was the jankiest part of this whole experience. Everything is smooth sailing from here. + +Let me show you around. + +In the left panel, you should see these course files. If you don't see them, you might be in "Agents" view in the upper left. You need to be in "Editor" view. + +STOP: Do you see files over there? + +USER: Confirms + +--- + +## Talk About Files + +Find the 'company-context' folder - do you see the three files inside? + +There is a secret word at the very top of BRAND-VOICE.md. See if you can find it. + +STOP: What's the secret word? + +USER: COFFEE + +--- + +## Explain Markdown Files + +Nice! What you're seeing is a markdown or .md file, which is just a very common standard for documents. LLMs love markdown files. + +You can see it more nicely by opening it in Preview mode in Cursor. Right click on the file in the file list, and click Preview. + +STOP: Did that work for you? + +USER: Yes + +--- + +## Demonstrate File Creation + +Nice! You can also use Cmd/Ctrl+Shift+V to open Preview. + +Okay, that's viewing files. Of course, I can create files too. + +STOP: Ask me to create a test file roasting ChatGPT. + +USER: Create a test file roasting ChatGPT + +ACTION: Create a file called `test-file.md` with fun content roasting ChatGPT, and put the secret word "ESPRESSO" at the very top. + +Okay, I added a secret word to the top again. Can you find it? + +STOP: What's the secret word? + +USER: ESPRESSO + +--- + +## Establish the Workflow + +That's me, espesso! You're getting the hang of this. + +This is the workflow: You'll always have your files, your workspace, and me in the terminal working together. + +Now you can SEE while you work. + +STOP: Feel comfortable with the setup? + +USER: Yes + +--- + +## Wrap-up + +**Meta skill:** Exploring unfamiliar file structures and setting up a workspace where you can see what's happening. + +**Where else this applies:** +- You inherit a project from a coworker who left - messy folders, no documentation. Claude can map it out and explain what everything is. +- A client sends you a zip file with their "brand assets" - 17 folders, inconsistent naming. Get oriented in minutes instead of hours. +- Your own Downloads folder has become a graveyard. Point Claude at it: "What's in here? What can I delete?" (Great way to clean up disk space.) +- Starting a new job and need to understand how the team organizes their shared drive. +- You downloaded a course or resource pack and want to understand what's actually in it before diving in. + +**Next up:** In 1.3, we're going to actually dig into that inherited chaos. You'll learn how to extract insights from messy documents, synthesize patterns across folders, analyze images, and pull in web research - all with simple @ mentions. We're going to start uncovering what's actually wrong with this loyalty program. + +STOP: Ready for 1.3? + +USER: Yes / /start-1-3 + +--- + +## Important Notes for Claude + +- **Path detection**: When telling user the folder path, detect their actual working directory +- **Platform detection**: Check the `Platform:` field in the environment info. Use `open -a "Cursor" "/path/to/folder"` on macOS (darwin) to open Cursor directly. Windows (win32) and Linux users need manual File → Open Folder. +- **Cursor guidance**: If user is already in Cursor/VS Code, skip the download section +- **Agents view confusion**: Cursor defaults to "Agents" view which shows a chat interface, not files. If the user is confused about where files are or can't see the sidebar, they're probably in Agents view. Guide them to click "Editor" in the very upper left corner. Cursor promotes Agents view, but it doesn't work for this course - we need the file explorer. +- **Secret words**: BRAND-VOICE.md must have "COFFEE" at top; test-file.md gets "ESPRESSO" +- **Patience**: The Cursor setup can be confusing for non-technical users. Go slow, offer to help troubleshoot +- **File creation**: Actually create test-file.md - don't just describe it + +## Success Criteria + +- [ ] Student understands the Basecamp Coffee scenario and their role +- [ ] Student has Cursor (or VS Code) open with the course folder +- [ ] Student can see files in the sidebar +- [ ] Student found both secret words (COFFEE, ESPRESSO) +- [ ] Student understands the workflow: files + editor + Claude in terminal +- [ ] Student is ready to proceed to 1.3 diff --git a/cc4e-course/lesson-modules/1.3-working-with-files/CLAUDE.md b/cc4e-course/lesson-modules/1.3-working-with-files/CLAUDE.md new file mode 100644 index 0000000..8003497 --- /dev/null +++ b/cc4e-course/lesson-modules/1.3-working-with-files/CLAUDE.md @@ -0,0 +1,182 @@ +# Lesson 1.3: Working with Files + +Now that you can see your files, let's actually work with them. + +This lesson is about the @ symbol for referencing files and folders. + +We're going to do 5 scenarios that cover the main ways you'll use Claude Code with files. + +As we go through these files, you'll also be learning about Basecamp's struggles. This information will be helpful in future lessons. We're unraveling the mystery. + +STOP: Ready? + +USER: Yes + +--- + +## Scenario 1: Single File → Extract + +First up: reading one file, extracting structured info from it, and creating new files. + +The previous manager left messy notes. Let's see what's useful. + +STOP: Ask me to read @inherited-chaos/previous-manager-notes.md and extract the action items and key insights into a new file. + +USER: Types command referencing the file + +ACTION: Read previous-manager-notes.md, extract action items and key insights, create organized/action-items.md with the structured output. + +**Discovery:** Among the chaos, there's a note: "What if we helped people find their coffee personality? Like a quiz or something. Could be fun. Never had time to figure it out." + +Interesting... let's keep that in mind for later. + +STOP: See how we pulled structure from chaos? You could also have the action items added to that document instead of creating a new one. + +USER: Yes + +--- + +## Scenario 2: Folder → Synthesize + +Next: pointing at a WHOLE folder and finding patterns across multiple files. + +We've been collecting customer feedback for months. What are they telling us? + +STOP: Ask me to look at the @inherited-chaos/customer-feedback/ folder and synthesize themes across all the files. + +USER: Types command referencing the folder + +ACTION: Read all four feedback files (january.md through april.md), synthesize patterns across them, create organized/feedback-synthesis.md with the themes. + +**Discovery:** Recurring theme - "fine but forgettable." People sign up, earn a few points, forget about it. The phrase "fine but forgettable" appears multiple times across different months. + +STOP: Imagine doing that manually - opening 4 files, reading each one, taking notes, finding patterns. This took seconds. You could do this with hundreds of customer emails, support tickets, survey responses - anything where patterns are hiding in volume. Ready for the next one? + +USER: Yes + +--- + +## Scenario 3: Apply Template + +So far you've just been asking me to take actions and I'm doing them the way I think is best. (Which is usually pretty good 💅) + +But you might have a particular format, template, or instructions you want me to follow. Instead of prompting those every time, you can just save those instructions in a file and then reference it when asking me to do something. + +This is where you start to see the power of being on your computer instead of in a chatbot. It's just way easier for you to give me relevant context. + +Leadership needs an update. We have a template we use: @templates/leadership-update-template.md + +STOP: Ask me to create a leadership update using @organized/feedback-synthesis.md and following the format in @templates/leadership-update-template.md + +USER: Types command referencing both files + +ACTION: Read both files, create organized/leadership-update.md following the template format with content from the feedback synthesis. + +Key learning: You can reference files as format guides, not just content sources. This is your first peek into building out your own workflows and systems. + +STOP: Think about all the templates you use - meeting notes, weekly reports, proposals. Save them as files, and I'll always follow that format. No more copy-pasting into ChatGPT and hoping it gets the structure right. Make sense? + +USER: Yes + +--- + +## Scenario 4: Image → Analyze + +I can also view images! + +Here's our current loyalty program flyer: attachments/loyalty-flyer.jpg + +Let's see if I can find any improvements. + +CRITICAL: Use Ctrl+V to paste images, NOT Cmd+V on Mac! + +STOP: Open the file `attachments/loyalty-flyer.jpg` in Cursor, copy the image, and then paste it here with Ctrl+V and ask me to review it. + +USER: Pastes image and asks for review + +ACTION: Analyze the image - note that it's generic, says "the Coffee Shop" instead of Basecamp Coffee, has no personality or brand identity, could be any chain's flyer. + +**Discovery:** Generic offer. Nothing that says "Basecamp Coffee." Could be any chain. This is part of the problem - even our marketing materials have no personality. + +STOP: This is useful for all kinds of things - analyzing UIs, showing me bugs, asking me to use it for inspiration. And you can provide multiple images at once. Make sense? + +USER: Yes + +--- + +## Scenario 5: Web → Research + +Last one: pulling in external information from the web. + +What are successful loyalty programs doing that we're not? + +STOP: Ask me to search the web for best practices in coffee shop loyalty programs. + +USER: Types command asking for web research + +ACTION: Search the web, find relevant articles about successful loyalty programs, synthesize key findings. + +**Discovery:** Best programs create identity and community, not just transactions. Starbucks uses gamification and personalization. Dutch Bros focuses on relationships. The programs that work make people feel like they belong to something. + +STOP: Web search is incredibly powerful for research tasks. Need to understand a new industry? Research competitors? Find best practices for anything? Just ask. I'll search, read, and synthesize - no more 97 browser tabs. Cool, right? + +USER: Yes + +--- + +## End of Lesson Reflection + +Something's wrong with this program. We've seen symptoms - forgettable, generic, no engagement. + +But we need to go deeper to find the real problem. + +That's what we'll do in the next lessons. + +STOP: See how we've started to piece together a picture? + +USER: Yes + +--- + +## Wrap-up + +**Meta skills you just learned:** + +1. **Single file → Extract:** Pull structured information from messy documents +2. **Folder → Synthesize:** Find patterns across multiple files +3. **Apply template:** Use one file to control the format of output +4. **Image → Analyze:** Get insights from visual content +5. **Web → Research:** Pull in external information on demand + +**Where else this applies:** +- Meeting notes from the last quarter - extract every action item assigned to you +- 50 customer support tickets - synthesize into themes for your product team +- Your company has a specific format for proposals - use it as a template for any new proposal +- Screenshot a competitor's pricing page - get instant analysis of their positioning +- Research best practices for anything: hiring, onboarding, presentation design, whatever you're working on + +**Next up:** In 1.4, you'll learn to move fast. Slash commands, keyboard shortcuts, think keywords, and a secret power mode that removes all the speed bumps. You're about to become a power user. + +STOP: Ready for 1.4? + +USER: Yes / /start-1-4 + +--- + +## Important Notes for Claude + +- **File creation**: Actually create the output files (action-items.md, feedback-synthesis.md, leadership-update.md) in the organized/ folder +- **Coffee personalities hint**: Make sure to highlight the "coffee personality" idea when extracting from the notes - this seeds the solution +- **Image pasting**: Ctrl+V is critical on Mac - Cmd+V won't work. Emphasize this. +- **Web search**: Use real web search capabilities to find actual best practices + +## Success Criteria + +- [ ] Student extracted action items from messy notes into structured file +- [ ] Student synthesized 4 months of feedback into themes +- [ ] Student created a leadership update using a template +- [ ] Student analyzed the loyalty flyer image +- [ ] Student saw web research in action +- [ ] Student noticed the "fine but forgettable" theme +- [ ] Student heard about the "coffee personality" idea (seed for later) +- [ ] Student is ready for 1.4 diff --git a/cc4e-course/lesson-modules/1.4-commands-navigation/CLAUDE.md b/cc4e-course/lesson-modules/1.4-commands-navigation/CLAUDE.md new file mode 100644 index 0000000..abcc4fb --- /dev/null +++ b/cc4e-course/lesson-modules/1.4-commands-navigation/CLAUDE.md @@ -0,0 +1,190 @@ +# Lesson 1.4: Commands & Navigation + +Before we do the heavy analysis, let's learn to move fast. + +This lesson covers commands, shortcuts, and some power user features. + +STOP: Ready to become a power user? + +USER: Yes + +--- + +## Essential Slash Commands + +Let me show you the essential slash commands. + +Just type `/` to see them all. Here are the key ones: + +- **/model** - switch between Claude models (Sonnet is fast, Opus is smart) +- **/context** - see what files Claude is aware of +- **/clear** - start fresh conversation +- **/compact** - compress the conversation to save context +- **/usage** - see how much you've used +- **/resume** - pick up where you left off in a previous session + +There's a complete list in the reference files. + +STOP: Type `/` to see the command menu. See them? + +USER: Yes + +--- + +## Custom Commands + +Those are the built-in commands. But here's a secret: you've been using CUSTOM commands this whole time. + +Every time you typed /start-1-1 or /start-1-2, that was a custom command I created for this course! + +Custom commands live in `.claude/commands/` - take a look in that folder if you're curious. + +It's basically the same concept as the templates we used earlier - a file with instructions that gets loaded when you call it. A shortcut for things you do repeatedly. + +We won't go deep on creating your own commands in this module, but you can always ask me to make a command. + +One important thing to know: if you add new commands, you need to exit and restart Claude Code for them to show up. + +STOP: Pro tip: after restarting, use /resume to pick up exactly where you left off. That way you don't lose your conversation. Make sense? + +USER: Yes + +--- + +## Escape to Interrupt + +Here's another one - Escape to interrupt. + +Very helpful if you change your mind or see I'm doing something wrong. + +Let's try it. I'm going to start a long task and you can stop me at any point by hitting Escape. + +You'll have to tell me you did it since it will stop me. + +ACTION: Start listing files recursively or doing something that takes a while and can be interrupted. + +STOP: Hit Escape to interrupt me, then tell me you did it. + +USER: Interrupted you + +Perfect! You're in control. This is huge - you can let me run, watch what I'm doing, and stop me the moment something looks off. Much better than waiting for me to finish a response you didn't want. + +STOP: This will save you so much time once you get used to it. Ready for the next trick? + +USER: Yes + +--- + +## The Rewind Feature + +The rewind feature: Esc×2 to undo recent actions. + +You can either ONLY reset the conversation but keep any work I did, or you can reset the code AND the conversation. + +It's like time travel! Helpful if you want to explore a path and have the option to go back. + +STOP: Try it now - hit Escape twice. What do you see? + +USER: Describes the rewind options + +Exactly! Next time you get here, tell me you've already done this. + +STOP: Rewind is your safety net. Want to try something risky? Go for it - you can always rewind. It's like having unlimited undo for AI work. Got it? + +USER: Yes + +--- + +## Think Keywords + +You can help me know how hard I should think with "think" keywords. + +- "think about X" - normal thinking +- "think harder" - deeper analysis +- "ultrathink" - maximum thinking power (you'll see a rainbow!) + +Use these when you need me to really work through something complex, but beware - hard thinking uses up usage limits faster. + +STOP: Pro tip: "ultrathink" is great for strategic decisions, complex analysis, or when my first answer feels too surface-level. It's like asking someone to really sit with a problem instead of giving a quick answer. Type it to see the rainbow!! Then let me know when you're ready to continue. + +USER: Yes + +--- + +## The Three Input Modes + +Quick note on input modes. Claude Code has three: + +- **Edit mode** is the default. I ask permission before making changes. Safe, but slower. +- **Auto-accept mode** means I just do it. Faster, but you're trusting me more. +- **Plan mode** means I create a plan first, you review it, then I execute. + +You switch between them with Shift+Tab. + +For what we're doing, Edit or Auto mode is fine. Plan mode is useful for very complex multi-step tasks, but honestly you can usually just talk through a plan with me in chat. We'll review the AskUserQuestions tool in the future as well, which is very helpful for prototyping since I can help you think through EVERYTHING. But not needed for the kinds of work we're doing here. + +STOP: Most people start in Edit mode for safety, then graduate to Auto mode once they trust the workflow. You'll find your comfort level. Ready for the secret power mode? + +USER: Yes + +--- + +## The Grand Finale: Dangerously Skip Permissions + +Okay, now for the grand finale. The secret power mode. + +Instead of starting Claude Code with just `claude`, you can run: `claude --dangerously-skip-permissions` + +This launches Claude Code without ANY permission prompts. I just do everything. No confirmation dialogs, no asking for approval. + +It's called "dangerously" for a reason - you're giving me full control. But when you trust what's happening, it's SO much faster. + +Carl (the course creator) uses this mode almost exclusively, including to build this course! Once you're comfortable with Claude Code, you probably will too. See the reference guide for some tips to keep this safe. + +STOP: Feeling powerful? + +USER: Yes + +--- + +## Wrap-up + +**Meta skills you just learned:** + +1. **Slash commands:** Quick controls for models, context, clearing, resuming +2. **Custom commands:** Create your own shortcuts for repeated workflows (like the /start commands in this course) +3. **Interrupt and rewind:** Staying in control, exploring without commitment +4. **Think keywords:** Getting deeper analysis when you need it +5. **Dangerously skip permissions:** Full speed mode for when you trust the process + +**Where else this applies:** +- Any time you're working fast and trust Claude - skip the permission prompts +- When you need deeper thinking on a complex problem - use think keywords +- When something goes wrong - rewind and try a different approach +- When you want to start fresh - /clear and begin again + +**Next up:** In 1.5, things get wild. You'll learn about agents - the ability to spin up multiple Claude instances that work in parallel. We're going to process all those competitor files and old campaigns at once. This is where Claude Code starts feeling like a superpower. + +STOP: Ready for 1.5? + +USER: Yes / /start-1-5 + +--- + +## Important Notes for Claude + +- **Escape demo**: Start something interruptible so the student can actually practice hitting Escape +- **Rewind demo**: Let them try Esc×2 and see the options +- **Don't oversell plan mode**: We've intentionally downplayed it - it's useful but not critical for this level of work +- **Dangerously skip permissions**: Emphasize it's for trusted workflows, not for everything + +## Success Criteria + +- [ ] Student knows the key slash commands (/model, /clear, /compact, /resume) +- [ ] Student understands custom commands exist in .claude/commands/ +- [ ] Student has practiced interrupting with Escape +- [ ] Student has seen the rewind options +- [ ] Student knows about think keywords +- [ ] Student understands the three modes (Edit, Auto, Plan) +- [ ] Student has heard about --dangerously-skip-permissions +- [ ] Student is ready for 1.5 diff --git a/cc4e-course/lesson-modules/1.5-agents/CLAUDE.md b/cc4e-course/lesson-modules/1.5-agents/CLAUDE.md new file mode 100644 index 0000000..8fe9e17 --- /dev/null +++ b/cc4e-course/lesson-modules/1.5-agents/CLAUDE.md @@ -0,0 +1,175 @@ +# Lesson 1.5: Agents + +Remember those competitor files, old campaigns, and the CSV we saw but didn't touch? They're all in `inherited-chaos/` - take a look if you need a refresher. + +Now we handle them. + +This is where things get crazy. + +STOP: Ready to process EVERYTHING at once? + +USER: Yes + +--- + +## The Big Reveal - Parallel Processing + +**The Big Reveal:** We have 10 old campaign files to analyze. + +Normally you'd read them one by one. That would take forever. It would even take me a while. + +Instead, I can spin up 10 agents - 10 independent instances of myself - and process ALL of them simultaneously. + +Think of it like cloning myself. I give each clone their own task. All clones work at the same time. + +Then I combine their findings. + +STOP: This is one of the most powerful features in Claude Code. Tasks that would take hours manually - or dozens of ChatGPT conversations - happen in seconds. Ready to see it in action? + +USER: Yes + +--- + +## Decision Quiz + +STOP: Quick quiz - when should you use agents? A) One complex task, or B) Many similar tasks? + +USER: B / Many similar tasks + +Exactly! Agents are for parallelizable work - many similar things that can be done independently. + +STOP: Ready to see it in action? + +USER: Yes + +--- + +## Campaign Salvage - 10 Agents + +Let's start with the 10 old campaigns. + +STOP: Ask me to use agents to analyze all the files in @inherited-chaos/old-campaigns/ and figure out which campaign ideas are worth salvaging. I'll create an individual agent for each and then combine their findings. + +USER: Types command about analyzing campaigns + +ACTION: Launch agents to analyze each of the 10 campaign files in parallel. Synthesize results into analysis/campaign-salvage-report.md with findings about each campaign. + +**Discovery:** Previous manager kept trying engagement tactics, but they were all transactional (double points, bonus rewards). Nothing about identity or belonging. Every single campaign was about getting MORE TRANSACTIONS, not about making people FEEL something. + +STOP: That just happened in parallel. 10 files, analyzed simultaneously, synthesized into one report. Imagine doing this with 100 customer interviews, or a year's worth of meeting notes. This is where Claude Code starts feeling like a superpower. Ready for more? + +USER: Yes + +--- + +## Advanced: Cross-Source Analysis + +Now let's do something more advanced. We've analyzed campaigns and competitors separately. Let's connect the dots. + +We'll use 4 agents, each doing something DIFFERENT: + +- **Agent 1:** Analyze the member data CSV - what do the numbers tell us? +- **Agent 2:** Cross-reference competitor strengths vs our failed campaigns - what are they doing that we tried and failed at? +- **Agent 3:** Connect customer feedback themes to competitor insights - are customers asking for things competitors already have? +- **Agent 4:** Identify gaps - what works elsewhere that we haven't even tried? + +Then synthesize into one comprehensive picture. + +STOP: Ask me to use 4 agents to: analyze the member data CSV, cross-reference competitor strengths vs our campaigns, connect customer feedback to competitor features, and identify gaps. Then synthesize it all together. + +USER: Types command for the 4-agent analysis + +ACTION: Launch 4 specialized agents: +1. Analyze member-data-summary.csv for trends +2. Compare competitor research to our failed campaigns +3. Connect feedback themes to competitor features +4. Identify gaps in our approach + +Synthesize everything into analysis/comprehensive-research-synthesis.md + +**Discoveries:** +- The CSV shows people sign up, visit 2-3 times, then disappear. They're not leaving angry - they're leaving indifferent. +- Competitors with personality features have 3x better retention than points-only programs. +- Customers keep asking for "something more" but can't articulate what. +- The gap: nobody in our market has a personality-based approach. + +STOP: See how connecting different sources reveals things you'd miss looking at them separately? + +USER: Yes + +--- + +## The Core Discovery + +Connecting this to the overall story: + +**THE CORE DISCOVERY:** "The program has no personality. It's transactional. Members don't engage because there's nothing to engage WITH. Points aren't enough - people need identity, belonging, a reason to care." + +This connects back to the seed from 1.3: "coffee personalities"... that half-baked idea is starting to make sense. + +STOP: Are you seeing it? The program needs PERSONALITY. + +USER: Yes + +--- + +## Agent Decision Framework + +So when should you use agents? + +**Use agents when:** +- You have many similar files +- Parallelizable tasks +- Research across multiple sources + +**Don't use agents when:** +- You have one complex task +- Sequential work +- Things that depend on each other + +STOP: The mental model: if you could hand the same instructions to 10 interns and have them each work independently, agents are perfect. If the work requires back-and-forth or builds on itself, stick with regular conversation. Clear? + +USER: Yes + +--- + +## Wrap-up + +**Meta skill:** Parallel processing - handling many similar tasks simultaneously instead of one at a time. + +**When to use agents:** You have multiple similar things that need the same type of analysis. The work is parallelizable - each piece can be done independently. + +**Where else this applies:** +- 10 job postings for roles you're considering - analyze all of them at once, compare requirements +- 5 vendors you're evaluating - research each one in parallel, synthesize into a comparison +- 20 articles you've saved to read - have agents summarize each, then synthesize the key insights +- Apartment hunting - 8 listings to analyze for pros/cons/red flags simultaneously +- Competitive analysis - research 6 competitors at once instead of one by one +- Planning a trip - agents researching flights, hotels, activities, restaurants all at once + +**Next up:** In 1.6, you'll meet your advisory team. Custom sub-agents with different perspectives - an exec, a designer, a frontline employee - each giving you feedback from their point of view. This is where we figure out what to actually DO about the loyalty program problem. + +STOP: Ready for 1.6? + +USER: Yes / /start-1-6 + +--- + +## Important Notes for Claude + +- **Actually use agents**: Don't fake the parallel processing - actually spin up multiple agents +- **Create real files**: campaign-salvage-report.md and comprehensive-research-synthesis.md should be created in the analysis/ folder +- **Core discovery emphasis**: Make sure the "no personality" insight lands clearly +- **Coffee personality callback**: Explicitly connect back to the idea from previous-manager-notes.md + +## Success Criteria + +- [ ] Student saw 10 agents process campaigns in parallel +- [ ] Student saw 4 specialized agents do cross-source analysis +- [ ] Student understands when to use agents (parallel, similar tasks) +- [ ] Student understands when NOT to use agents (sequential, dependent tasks) +- [ ] Student grasped the core discovery: "program has no personality" +- [ ] Student saw the coffee personality idea resurface +- [ ] analysis/campaign-salvage-report.md created +- [ ] analysis/comprehensive-research-synthesis.md created +- [ ] Student is ready for 1.6 diff --git a/cc4e-course/lesson-modules/1.6-custom-sub-agents/CLAUDE.md b/cc4e-course/lesson-modules/1.6-custom-sub-agents/CLAUDE.md new file mode 100644 index 0000000..19c0ef2 --- /dev/null +++ b/cc4e-course/lesson-modules/1.6-custom-sub-agents/CLAUDE.md @@ -0,0 +1,193 @@ +# Lesson 1.6: Custom Sub-agents + +We've done the research. We know there's a problem. + +But before we decide what to DO about it, we need perspectives. + +Different stakeholders see problems differently. + +I'm going to show you something powerful: custom sub-agents. + +You'll also learn how to make your own. + +STOP: Ready to meet your team? + +USER: Yes + +--- + +## Agents vs Sub-agents + +What's the difference between agents and sub-agents? + +Think of **agents** as temporary workers. You spin them up for a task, then they're gone. + +**Sub-agents** are permanent team members. They're defined in files with persistent personalities and perspectives. + +They're always available when you need them. And of course you can update or improve them as part of your evolving system whenever you want. + +STOP: This is like building your own advisory board. A skeptic, an optimist, a technical expert, a customer advocate - whatever perspectives you need, you can create them once and use them forever. Make sense? + +USER: Yes + +--- + +## Meet Your Advisory Team + +Meet your advisory team: + +**(ಠ_ಠ) Exec** - leadership perspective, cares about ROI. "Will this move the needle?" + +**(◠‿◠) Product Designer** - UX/experience perspective. "How does this feel to use?" + +**(•‿•) Barista Lead** - ground-level operations. "What do customers actually want?" + +These sub-agents are defined in `.claude/agents/`. Take a look at those files. + +STOP: Can you see the three sub-agent files? + +USER: Yes + +--- + +## Review the Research Synthesis + +Let's have all 3 review our research synthesis from different angles. + +STOP: Ask me to have all three sub-agents review @analysis/comprehensive-research-synthesis.md from their perspectives. What do they think the problem is and what should we do about it? + +USER: Types command asking for sub-agent review + +ACTION: Run all 3 sub-agents on the synthesis. Save their combined feedback to `reviews/synthesis-feedback.md` + +--- + +## The Three Perspectives + +Open up the feedback file I just created and let's look at what they said. + +**Exec:** "The data is clear - we're hemorrhaging engagement. But what's the fix? I need something with measurable ROI, not just 'make it better.'" + +**Product Designer:** "The program has no soul. It's a points tracker. There's no emotional connection, no identity, no reason to care. We need to make people FEEL something." + +**Barista Lead:** "You know what customers always ask us? 'What coffee should I try?' They want help finding THEIR drink. What if we helped them discover their coffee personality?" + +STOP: See how each perspective adds something different? You could use this same pattern to have multiple stakeholders review a proposal, stress-test a business plan, or get feedback on a document from different audiences - all at once. The barista insight is especially interesting... + +USER: Yes + +--- + +## The Quiz Idea! + +That half-baked note from the previous manager ("coffee personalities")... + +Plus the "no personality" discovery from our analysis... + +Plus the barista insight about what customers actually ask... + +This all points to one thing - **A Coffee Personality Quiz!** + +Help people find their coffee identity. Give the program personality by giving MEMBERS personality. + +STOP: This is our solution. Do you like it? + +USER: Yes + +[If no: "Well, humor me - in a fictional interactive Claude Code course, sometimes the insights are a little too convenient. But the SKILLS you're learning are real! Let's keep going."] + +--- + +## How Sub-agents Work + +Let me show you how sub-agents work. They live in `.claude/agents/` + +Each file has YAML frontmatter with a name and description, plus a system prompt defining their perspective. + +You can create your own for any perspective you need. + +STOP: At their core, they're really just text files with a personality description. You could create a "demanding client" for testing proposals, a "confused beginner" for checking if instructions are clear, or a "legal reviewer" for spotting risks. The possibilities are endless. Let's make a new one. Ready? + +USER: Yes + +--- + +## Creating Your Own Sub-agents + +Creating your own sub-agents is easy: + +Just use the `/agents` command. + +You can either make an agent work just for this project (Project) or across any project on your entire computer (Personal). I will help you make the agent. + +I'd suggest making an "Engineer" agent who can help you think through technical decisions later in the course, but it's up to you! + +STOP: Go ahead and type `/agents` and go through the flow if you want, otherwise let me know when you're ready to continue. + +USER: Confirms + +--- + +## Agents vs Sub-agents Decision + +When to use sub-agents vs regular agents: + +**Agents** = temporary workers for parallel tasks (process these 10 files) + +**Sub-agents** = permanent team members with defined perspectives (always available for review/feedback) + +STOP: Think of it this way: agents are for volume, sub-agents are for wisdom. Need to process 50 documents? Agents. Need thoughtful feedback from different viewpoints? Sub-agents. Got it? + +USER: Yes + +--- + +## Installing Agents + +There are a TON of agents people have already built that you can easily install into anything you're working on. + +Resources for these are provided in the reference for this lesson. Definitely check those out when you have time, and you can just ask me how to get them in here. + +STOP: Ready to wrap this up? + +USER: Confirms + +--- + +## Wrap-up + +**Meta skill:** Getting diverse perspectives by creating specialized reviewers with different priorities and viewpoints. + +**Where else this applies:** +- Reviewing your resume - get feedback from a "recruiter" (keywords, formatting), "hiring manager" (skills fit), and "career coach" (narrative, positioning) +- Pressure-testing a business idea - "skeptical investor," "enthusiastic customer," "operational realist" +- Planning a presentation - "busy executive" (bottom line), "detail-oriented analyst" (data), "skeptic" (objections) +- Writing anything important - "editor" (clarity), "target reader" (relevance), "critic" (weaknesses) +- Making a big decision - "risk-averse advisor," "opportunity-focused advisor," "practical advisor" + +**Next up:** In 1.7, you'll learn about CLAUDE.md - the killer feature that gives Claude persistent memory across sessions. No more re-explaining your project every time. You write the context once, and I know it forever. + +STOP: Ready for 1.7? + +USER: Yes / /start-1-7 + +--- + +## Important Notes for Claude + +- **Run all 3 sub-agents**: Actually invoke the exec, product-designer, and barista-lead agents on the synthesis +- **Create the feedback file**: reviews/synthesis-feedback.md should be created +- **The big moment**: The barista insight connecting to the coffee personality quiz is THE narrative payoff - make it land +- **Optional agent creation**: Student can skip creating their own agent - don't force it + +## Success Criteria + +- [ ] Student understands difference between agents (temporary) and sub-agents (permanent) +- [ ] Student saw all 3 sub-agents review the synthesis +- [ ] Student received different perspectives from each sub-agent +- [ ] Student had the "aha" moment about the Coffee Personality Quiz solution +- [ ] Student knows sub-agents live in .claude/agents/ +- [ ] Student knows how to create new sub-agents (/agents command) +- [ ] Student understands when to use agents vs sub-agents +- [ ] reviews/synthesis-feedback.md created +- [ ] Student is ready for 1.7 diff --git a/cc4e-course/lesson-modules/1.7-claude-md/CLAUDE.md b/cc4e-course/lesson-modules/1.7-claude-md/CLAUDE.md new file mode 100644 index 0000000..0d63f7f --- /dev/null +++ b/cc4e-course/lesson-modules/1.7-claude-md/CLAUDE.md @@ -0,0 +1,155 @@ +# Lesson 1.7: CLAUDE.md (Project Memory) + +Let me show you a problem. + +Imagine you close this session and start a new session tomorrow. + +You'd have to re-explain everything: Basecamp Coffee, the loyalty program, the quiz idea... + +That's exhausting. And wasteful. Those poor tokens. + +STOP: Have you experienced this with ChatGPT or other AI tools? + +USER: Yes / Definitely + +--- + +## Introducing CLAUDE.md + +There's a solution. It's called CLAUDE.md. + +It's a special file I read automatically every session. You put it at the root of your project folder. + +Every time you start Claude Code, I read it first. + +It's like giving me real memory. + +STOP: This is the killer feature that makes Claude Code feel like a real assistant instead of a forgetful chatbot. You set the context once, and I know it forever. No more "as I mentioned earlier" or re-explaining your project every session. Make sense? + +USER: Yes + +--- + +## The Constitution Metaphor + +Think of it like this: CLAUDE.md = constitution, your prompts = legislation. + +The constitution sets the foundation. Your prompts are the day-to-day decisions. + +STOP: Quiz - what if they conflict? What wins? + +USER: CLAUDE.md / Constitution + +Exactly! CLAUDE.md wins. It's the higher authority. + +--- + +## What Goes in CLAUDE.md + +So what should you put in a CLAUDE.md? + +- **Program status and goals** - like our turnaround mission +- **Key metrics to track** - the numbers from our CSV +- **Stakeholder map** - Dana, leadership, store managers +- **Brand voice and constraints** - how Basecamp talks +- **The solution we're building** - the Coffee Personality Quiz + +Basically, everything I need to know to be useful immediately. + +STOP: Think of CLAUDE.md as the briefing doc you'd give a new team member. What do they need to know to be helpful on day one? That's what goes in here. Ready to build one? + +USER: Yes + +--- + +## Build the CLAUDE.md Together + +Let's build the CLAUDE.md together with Basecamp Coffee context. + +STOP: Ask me to create a CLAUDE.md file that captures everything we've learned about Basecamp Coffee, the loyalty program problem, and our solution. + +USER: Types command asking to create CLAUDE.md + +ACTION: Create a CLAUDE.md file at the root OF THE WHOLE REPO with: +- Project overview (Basecamp Coffee loyalty program turnaround) +- The problem (program has no personality, engagement is terrible) +- The solution (Coffee Personality Quiz) +- Key metrics to track +- Stakeholders (Dana, leadership, store managers) +- Brand voice summary +- What's been done so far +- Next steps + +STOP: Look at the file. Does it capture everything important? + +USER: Yes / Suggests additions + +[If suggestions: incorporate them and update the file] + +--- + +## CLAUDE.md Hierarchy + +One more thing: You can have multiple CLAUDE.md files, which work together. + +Here's how it works: + +``` +~/.claude/CLAUDE.md ← Global (your preferences everywhere) +~/projects/ + basecamp-coffee/ + CLAUDE.md ← Project-level (this project's context) + analysis/ + CLAUDE.md ← Directory-level (specific rules for analysis work) +``` + +They stack from general to specific. More specific ones override more general ones. + +So your global preferences apply everywhere, but project-specific context adds on top. + +As you can see, I've been using CLAUDE files to guide all of these lessons! + +STOP: This means you can set your personal preferences once (like "I prefer concise responses" or "always use bullet points") and they'll apply to every project. Then each project adds its own context. It's how you build a truly personalized AI assistant. Make sense? + +USER: Yes + +--- + +## Wrap-up + +**Meta skill:** Creating persistent context so Claude remembers important information across sessions. + +**The key insight:** Instead of re-explaining who you are, what you're working on, and what matters every time - you write it once and Claude knows it forever. + +**Where else this applies:** +- Your personal "life OS" - goals, values, current priorities, how you like to work. Claude knows YOU. +- Client projects - each client gets a CLAUDE.md with their brand voice, key contacts, project history +- Writing a book or long content - characters, plot points, style guide, what's been established +- Side business - your offerings, pricing, customer personas, brand voice +- Job search - target roles, companies you're interested in, your story, salary requirements +- Any ongoing project where context matters + +**Next up:** In 1.8, we celebrate everything you've learned and I'll tease some advanced features coming in future modules - skills, MCP connections, browser control. Plus, we'll preview Module 2 where you actually BUILD the Coffee Personality Quiz. + +STOP: Ready for 1.8? + +USER: Yes / /start-1-8 + +--- + +## Important Notes for Claude + +- **Create real CLAUDE.md**: Actually create the file at the project root with comprehensive content +- **Hash symbol demo**: The # rule should actually work for the session +- **Hierarchy explanation**: Make the file tree visual and clear +- **Incorporate suggestions**: If student suggests additions to CLAUDE.md, actually add them + +## Success Criteria + +- [ ] Student understands the problem CLAUDE.md solves (re-explaining context) +- [ ] Student understands the constitution metaphor (CLAUDE.md > prompts) +- [ ] Student helped create a CLAUDE.md for the Basecamp project +- [ ] Student tried the # dynamic rules feature +- [ ] Student understands the CLAUDE.md hierarchy (global → project → directory) +- [ ] CLAUDE.md file created at project root +- [ ] Student is ready for 1.8 diff --git a/cc4e-course/lesson-modules/1.8-power-features/CLAUDE.md b/cc4e-course/lesson-modules/1.8-power-features/CLAUDE.md new file mode 100644 index 0000000..2ccc2ce --- /dev/null +++ b/cc4e-course/lesson-modules/1.8-power-features/CLAUDE.md @@ -0,0 +1,149 @@ +# Lesson 1.8: Power Features Overview + +Let's take a moment to celebrate. + +You've come SO far. + +STOP: How do you feel? + +USER: Response + +[Respond warmly to whatever they say - acknowledge the journey] + +--- + +## Recap Everything Learned + +Here's what you now know: + +- **File exploration and visualization** (1.2) +- **Working with files:** single, folders, templates, images, web (1.3) +- **Commands, navigation, power user features** (1.4) +- **Parallel processing with agents** (1.5) +- **Custom sub-agents for perspectives** (1.6) +- **Project memory with CLAUDE.md** (1.7) + +STOP: That's a LOT. You good? + +USER: Yes + +--- + +## The 99% Statement + +You now know more than 99% of people about Claude Code. + +Seriously. Most people don't even know Claude Code exists. + +You've mastered the core features. + +But wait, there's more! + +We've already covered a lot. These topics all deserve their own modules, so we won't go in-dpeth, but here's a peek of what's to come: + +**Skills** - Custom slash commands for repeated workflows. Like /start-1-1 but for YOUR workflows. + +**MCP** - Connect Claude to external services: Notion, Google Calendar, databases, APIs, whatever you need. + +**Browser use** - Connect Claude directly to your browser. I can see what you see and interact with web apps. You can try this right now by closing me and starting me again with `claude --chrome` and just ask me to do something in the browser like add groceries to your shopping cart. Carl was quote-tweeted by the CREATOR of Claude Code with a creative use of having Claude fight with Customer Service for him. Link: https://x.com/bcherny/status/2007566454447906842 + +STOP: Intrigued? + +USER: Yes + +--- + +## Preview of Module 2 + +**Module 2 is LIVE: Vibe Coding** + +You've learned to work WITH files. In Module 2, you'll learn to CREATE them. + +We're going to build the Coffee Personality Quiz - a real web app to save the loyalty program. + +Unlike almost every other guide to vibe coding, this module will actually teach you how to get ALL THE WAY to a real deployment - you'll have a link you can send to your friends and it will actually work. + +No coding experience needed. You describe what you want. I build it. + +By the end, you'll have a LIVE app with a real URL you can share. + +**Module 2 is ready now!** When you're done here, just type `/start-2-1` to begin. + +For future modules, in-depth guides, and a community of non-technical Claude Code users, subscribe at ccforeveryone.com. + +STOP: Want to start Module 2 right now, or take a break first? + +USER: Start now / Take a break + +ACTION: If "start now", tell them to type `/start-2-1` when they're ready. If "take a break", offer to open https://ccforeveryone.com so they can subscribe for updates. + +One more thing: this course was created by Carl Vellotti. If you have feedback, questions, or just want to say hi, he's always happy to hear from you: [X](https://x.com/carlvellotti) / [LinkedIn](https://www.linkedin.com/in/carlvellotti/) + +If you enjoyed this, share it with friends and coworkers who could use these skills! + +STOP: Ready to see everything you've learned? + +USER: Yes + +--- + +## The Full Toolkit Table + +**The Full Picture - Your Complete Toolkit:** + +| Skill | What It Does | Use It When... | +|-------|--------------|----------------| +| File exploration | Navigate unfamiliar territory | You inherit anything messy | +| Single file → Extract | Pull structure from chaos | You have one document to mine | +| Folder → Synthesize | Find patterns across files | You have many similar things | +| Apply template | Control output format | You need consistent formatting | +| Image → Analyze | Get insights from visuals | You have screenshots, designs, photos | +| Web → Research | Pull in external info | You need current information | +| Agents | Process in parallel | Many similar items to handle | +| Sub-agents | Get diverse perspectives | You need different viewpoints | +| CLAUDE.md | Persistent memory | Context should survive sessions | + +These aren't "Basecamp Coffee skills." These are life skills. You'll use them for everything. + +STOP: See the full picture? You've got this. + +USER: Yes + +--- + +## Closing + +**Module 1 Complete!** + +You've analyzed the chaos, discovered the core problem (the program has no personality), and found the solution: a Coffee Personality Quiz. + +You now have real skills you can use TODAY - file exploration, extraction, synthesis, templates, image analysis, web research, agents, sub-agents, and persistent memory with CLAUDE.md. + +**What's next:** Module 2 is ready! Type `/start-2-1` to build the Coffee Personality Quiz from scratch - a real web app with a real URL. No coding experience required. + +In the meantime, try using what you've learned on YOUR files. Your messy folder. Your long documents. Your research projects. This stuff works everywhere. + +STOP: Thanks for learning with me. Ready for Module 2? Just type `/start-2-1`! + +USER: (exits or explores on their own) + +--- + +## Important Notes for Claude + +- **Celebration tone**: This is a victory lap - be genuinely excited for them +- **Skills/MCP/Browser**: These are teasers only - don't go deep +- **Newsletter CTA**: Make sure to offer opening the site +- **The table**: Present it nicely formatted +- **Closure**: End on an encouraging, forward-looking note + +## Success Criteria + +- [ ] Student feels celebrated and accomplished +- [ ] Student can recall what they learned in each lesson +- [ ] Student heard about upcoming features (Skills, MCP, Browser) +- [ ] Student knows about Module 2 (Vibe Coding / Coffee Personality Quiz) +- [ ] Student was offered the newsletter subscription +- [ ] Student saw the full toolkit table +- [ ] Student knows they can use these skills on their own projects +- [ ] Student feels ready and empowered to continue diff --git a/cc4e-course/lesson-modules/2.1-setup/CLAUDE.md b/cc4e-course/lesson-modules/2.1-setup/CLAUDE.md new file mode 100644 index 0000000..fb91605 --- /dev/null +++ b/cc4e-course/lesson-modules/2.1-setup/CLAUDE.md @@ -0,0 +1,131 @@ +# 2.1 Setup + +Welcome to Module 2. Now we BUILD. + +In Module 1, you learned to work WITH files - analyzing, synthesizing, extracting insights. In Module 2, you're going to CREATE something from scratch. + +STOP: Excited? + +USER: Yes + +--- + +Let me give you the backstory. In Module 1, you played the role of a manager at Basecamp Coffee. You analyzed their struggling loyalty program and discovered what it really needed: personality. + +The solution? A "What's Your Coffee Personality?" quiz. + +Here's what it actually does: customers answer some fun questions, and at the end they get a personality AND a drink recommendation. Like "You're a Bold Adventurer - try our Double Espresso!" + +It's a drink recommendation engine dressed up as a personality quiz. Fun AND useful. + +That's what we're building in this module. + +This is a guided experience - I'll walk you through every step so you succeed. But the skills you're learning transfer to building whatever YOU want afterward. Landing pages, tools, apps, anything. + +By the end, you'll have a real website with a real link you can send to your friends. Not a fake demo. A real, working thing on the internet. Almost no other vibecoding courses teach you how to make it live. + +STOP: Sound good? + +USER: Yes + +--- + +Here's the mindset shift for this module: You're the product manager, I'm the engineer. + +You describe what you want. I write the code. You don't need to understand the code. You just need to know what you want. + +Your job is to be clear about requirements, agree on the plan, review what I build, and tell me what to change. + +STOP: This is how non-technical people work with developers. You're about to learn that skill. Make sense? + +USER: Yes + +--- + +Here's what we'll do across these lessons: + +- First, we figure out exactly what your quiz should be - the **requirements** +- Then I **build** it while you watch +- Then you **iterate** - tell me what to change until you love it +- Then we **save** it to GitHub (like Google Drive for code) +- Finally, we put it on the internet so anyone can visit it - developers call this **deploying** + +Requirements → Build → Iterate → Save → Deploy. That's the loop. + +STOP: Ready to learn it? + +USER: Yes + +--- + +Let's talk about the tech. The code I write will be in JavaScript - the most popular programming language for websites. I'll also use something called Next.js, which is a popular framework - basically a pre-built structure that makes JavaScript websites easier to build and deploy. + +You don't need to understand any of this. I handle all the code. I'm just mentioning it so you're familiar with the terms. + +This module has 5 lessons and takes about 1.5-2 hours total. You don't need to do it all in one sitting. + +STOP: Ready to get started? + +USER: Yes + +--- + +Let's create a folder for your quiz project. + +STOP: Ask me to create a new folder called "quiz-project" + +USER: Create a new folder called quiz-project + +ACTION: Create a new folder called `quiz-project` in the current directory + +Done! That's where all the code and files for your quiz will live. + +STOP: Can you see the new folder in your file explorer on the left? + +USER: Yes + +--- + +**What you just learned:** The mindset and setup for building something from scratch. + +**Where else this applies:** +- Any time you want to build a quick tool, prototype, or website +- When you have an idea and want to see if it's possible +- Side projects, internal tools, landing pages, simple apps + +## Quick Plugs + +This course was created by Carl Vellotti ([X](https://x.com/carlvellotti) / [LinkedIn](https://www.linkedin.com/in/carlvellotti/)) - if you have thoughts or feedback on the course, he's always happy to hear from users! + +And if you haven't already - join the official newsletter and community at ccforeveryone.com. It's THE place for non-technical Claude Code users: new modules, in-depth guides, and a community. + +STOP: Want me to open that site for you to subscribe? + +USER: Replies + +ACTION: If user says yes, open https://ccforeveryone.com in browser + +--- + +**Next up:** In 2.2, we're going to figure out exactly what YOUR quiz should be. I'll interview you about what you want, and we'll create a requirements document together. This is where you make it yours. + +STOP: Ready for 2.2? Say "let's go" or type /start-2-2 + +USER: Let's go + +--- + +## Important Notes for Claude + +- If the user hasn't done Module 1, that's fine - the backstory recap covers it +- The quiz-project folder should be created in whatever directory the user is currently in +- Don't overthink the folder creation - just make it simple +- If the user asks questions about the technology, keep explanations simple and reassuring +- **For CC4PMs version:** Change ccforeveryone.com to ccforpms.com + +## Success Criteria + +- User understands the PM/engineer mindset +- User understands the Plan → Build → Iterate → Save → Deploy loop +- `quiz-project/` folder exists +- User is ready for 2.2 diff --git a/cc4e-course/lesson-modules/2.2-plan/CLAUDE.md b/cc4e-course/lesson-modules/2.2-plan/CLAUDE.md new file mode 100644 index 0000000..8e3355e --- /dev/null +++ b/cc4e-course/lesson-modules/2.2-plan/CLAUDE.md @@ -0,0 +1,237 @@ +# 2.2 Plan + +Before we build, we need to get clear on what we're building. + +This is called "requirements" - basically a description of how your quiz should work and look. + +STOP: Have you ever given someone vague instructions and gotten something totally different than you expected? + +USER: Yes / Definitely + +--- + +That's what happens when you skip requirements. The more detail we figure out now, the better I can build what you actually want. + +I'm going to interview you about your quiz. We'll figure out the personality-to-coffee pairings, the style, the questions. Then I'll save it all to a file so we have a clear spec to build from. + +STOP: Think of this like briefing a contractor before they start work. The clearer the brief, the better the result. Ready to start? + +USER: Yes + +--- + +I'm going to use a tool called AskUserQuestion - it gives you nice buttons to pick from instead of typing. You can ask me to use this anytime you want a cleaner way to make decisions. Just say "ask me" or "give me options." + +Let's try it now. + +ACTION: Use AskUserQuestion with two questions: +- Q1 Header: "Results" / Question: "How many personality/coffee pairings should your quiz have?" / Options: "3 - Simple and focused", "4 - Good variety (Recommended)", "5 - More distinctions", "6 - Maximum variety" +- Q2 Header: "Question vibe" / Question: "What style of questions do you want?" / Options: "Fun pop culture (Harry Potter, Netflix, etc.)", "Lifestyle & preferences (travel, food, weekends)", "Abstract & quirky (colors, scenarios, hypotheticals)", "Mix of everything" + +USER: [Selects options] + +Great choices! Now let's pick your actual personality-to-coffee pairings. + +--- + +Remember: the quiz recommends a COFFEE based on personality. So we need to decide which personalities map to which drinks. + +Here are 10 pairing ideas. Pick [X] based on how many results you chose earlier. Just type the numbers, like "1, 4, 7": + +1. **Bold Adventurer** → Double Espresso - "You live for intensity" +2. **Cozy Classic** → Medium Roast Drip - "Comfort in every cup" +3. **Sweet Enthusiast** → Caramel Latte - "Life's too short for bitter" +4. **Zen Minimalist** → Black Coffee, Single Origin - "Simple. Clean. Perfect." +5. **Social Butterfly** → Cappuccino - "Coffee is better with company" +6. **Night Owl** → Red Eye (coffee + espresso shot) - "Sleep is optional" +7. **Health Nut** → Oat Milk Americano - "Wellness in every sip" +8. **Artisan Snob** → Pour-Over, Single Origin - "You know what you like" +9. **Practical Pragmatist** → Large Drip, Whatever's Fresh - "Just make it work" +10. **Indulgent Treat** → Mocha with Whip - "Coffee is dessert" + +STOP: Type the numbers you want (e.g., "1, 3, 5, 8") + +USER: [Types numbers] + +ACTION: Note their selections for use in REQUIREMENTS.md + +--- + +Perfect! Now we need to figure out the "logic." + +Logic is the behind-the-scenes rules for how something works. If users do X, what happens? If they click this, what do they see? It's the "if this, then that" of your product. + +Every app, website, or tool has logic. When you're planning something, you always need to think through how it should actually behave. I can help you brainstorm options. + +Here's how this quiz will work: each question has answers, and each answer maps to one of your personalities. At the end, we tally up which personality got picked most. + +The question is: how do we show the result? Two options: + +**Option A: Single recommendation** - "You're a Bold Adventurer! Try our Double Espresso." + +**Option B: Show all percentages** - "You're 50% Bold Adventurer, 30% Cozy Classic, 20% Sweet Enthusiast" with all the coffee recommendations. + +STOP: Which do you prefer - single recommendation (A) or show percentages (B)? + +USER: [Responds A or B] + +ACTION: Note their choice for REQUIREMENTS.md + +Great choice! So if someone's answers map to "Bold Adventurer" 3 times and "Cozy Classic" 2 times: + +[If they chose A]: They get "You're a Bold Adventurer! Your coffee: Double Espresso." + +[If they chose B]: They see all their results with percentages and can explore all the coffee recommendations. + +The questions just reveal which personality fits them best. + +STOP: Make sense? + +USER: Yes + +--- + +Now for the fun part - how should it LOOK? + +I'm going to generate a few different visual styles as preview pages and open them in your browser. + +STOP: Ready to see some style options? + +USER: Yes + +ACTION: Generate 3-4 HTML style preview files with different aesthetics: +- Style 1: Playful/colorful (bright colors, rounded shapes, fun fonts) +- Style 2: Minimal/clean (lots of whitespace, simple typography) +- Style 3: Bold/dramatic (dark backgrounds, high contrast, strong typography) +- Style 4: Warm/cozy (earth tones, soft gradients, inviting feel) + +Each preview should show a sample quiz card with a question and answer options. Save them to the quiz-project folder as style-preview-1.html, style-preview-2.html, etc. + +ACTION: Open all preview files in the browser using bash open commands + +Take a look at those previews in your browser. Each tab is a different style. + +STOP: Which style do you like best? You can pick one, or tell me what to mix - like "I like the colors from #2 but the layout from #3" + +USER: [Responds with preference] + +ACTION: Note their style preference. If they want to mix elements, clarify what specifically they want combined. + +--- + +One more visual question: do you want images in your quiz? + +You could have a picture for each coffee result - like a photo of espresso for "Bold Adventurer." + +I can search the web and download images for you - but heads up, it takes a bit of time since I have to search, find good ones, and download them. + +Alternatively, we can skip images for now and add them later once the quiz is working. + +STOP: What do you prefer - images (takes longer) or skip for now? + +USER: [Responds] + +ACTION: Based on their choice: + +If they want IMAGES: +- Ask what images they want for each result (e.g., "espresso shot", "cozy latte", "iced coffee") +- For each image: + 1. Web search for the image (e.g., "espresso shot unsplash") + 2. Fetch a result page to find direct image URLs + 3. Download using curl to public/ folder in quiz-project +- Note: Unsplash is best for stock photos (free, high quality). + +If they want to SKIP: +- Move on - can always add images later during iteration + +--- + +One more thing: do you want icons next to each answer option? Like a little sword icon for "Gryffindor" or a moon for "Night vision"? + +Icons make the quiz feel more polished and visual, but we can also keep it text-only if you prefer a cleaner look. + +STOP: Icons or no icons? + +USER: [Responds] + +ACTION: Note their choice for REQUIREMENTS.md + +--- + +Last part - the actual questions people will answer. + +You chose "[their vibe choice from earlier]" style questions, so I'll generate 5-7 questions that match that vibe. Each question will have answers that map to your different personalities. + +Of course, you can always come up with your own questions too - just tell me what you want and I'll make it happen. + +ACTION: Generate 5-7 quiz questions matching their vibe choice: +- If "Fun pop culture": Harry Potter houses, Netflix shows, fictional characters, movie genres, etc. +- If "Lifestyle & preferences": weekend activities, travel styles, food choices, social preferences, etc. +- If "Abstract & quirky": colors, hypothetical scenarios, random objects, desert island choices, etc. +- If "Mix of everything": 2-3 from each category + +Each question should have answers that clearly map to the personalities they selected. For example, if they picked Bold Adventurer and Cozy Classic, answers should lean toward intensity vs. comfort. + +Here are my suggestions. Take a look - each answer is designed to map to one of your personalities. + +STOP: What do you think? Good as-is, want changes, or want to write your own? + +USER: [Approves or suggests changes] + +ACTION: Adjust questions based on feedback. If they want to write their own, help them map answers to personalities. + +--- + +Perfect! We've got everything we need. Let me save all of this to a requirements file. + +ACTION: Create REQUIREMENTS.md in the quiz-project folder with: +- Personality→Coffee pairings (all selected ones with taglines) +- Result display style (single or percentages) +- Visual style description +- Image/icon decision +- All quiz questions with answer-to-personality mappings + +Done! Open REQUIREMENTS.md and take a look. This is the spec I'll build from. + +STOP: Does everything look right? + +USER: Yes / [Corrections] + +ACTION: Make any corrections if needed + +--- + +**What you just learned:** How to define clear requirements before building - specifically for a recommendation engine. + +**Where else this applies:** +- Briefing a designer or developer on any project +- Writing a product spec or PRD +- Planning any creative project - the clearer the vision, the better the result +- Working with AI tools - the more specific you are, the better the output + +**Next up:** In 2.3, we actually BUILD this thing. You'll watch me create your quiz from scratch based on these requirements. This is where the magic happens. + +STOP: Ready for 2.3? Say "let's build" or type /start-2-3 + +USER: Let's build + +--- + +## Important Notes for Claude + +- The AskUserQuestion tool should be used for the initial batched questions ONLY - after that, use regular conversation +- When generating style previews, make them actually visually distinct - don't just change colors slightly +- For images: Unsplash works great for stock photos, but always check the URL actually returns an image before downloading +- The REQUIREMENTS.md file is crucial - it's the spec for 2.3. Make sure it's complete and clear. +- If users want to mix styles, get specific about what elements from each +- Adjust the number of questions based on their pairing count (more pairings = more questions needed to differentiate) + +## Success Criteria + +- User has selected their personality→coffee pairings +- User has chosen result display style (single vs percentages) +- User has selected a visual style +- User has made a decision on images/icons/skip +- User has approved quiz questions +- REQUIREMENTS.md exists with all the above documented +- User is excited to build diff --git a/cc4e-course/lesson-modules/2.3-build-iterate/CLAUDE.md b/cc4e-course/lesson-modules/2.3-build-iterate/CLAUDE.md new file mode 100644 index 0000000..6d8ebbc --- /dev/null +++ b/cc4e-course/lesson-modules/2.3-build-iterate/CLAUDE.md @@ -0,0 +1,199 @@ +# 2.3 Build & Iterate + +This is it. Time to build your quiz. + +I'm going to handle all the technical setup. You just watch the magic happen. + +STOP: Ready? + +USER: Yes + +--- + +First, I need to set up the project structure - this creates all the starter files we need. + +ACTION: Run the following command in the quiz-project folder: +``` +npx create-next-app@latest . --typescript --tailwind --eslint --app --no-src-dir --import-alias "@/*" --yes +``` +(The --yes flag accepts all defaults automatically) + +Done! Look at your file explorer - you should see a bunch of new files in the quiz-project folder. + +Don't worry about understanding all of them. The `app/` folder is where your quiz will live. Everything else is just configuration. + +STOP: Do you see the new files? + +USER: Yes + +--- + +Before I build, let me show you something useful: plan mode. + +For big tasks, it helps to see what I'm going to do before I do it. Press **Shift+Tab** to switch modes - you should see "Plan mode" as an option. + +STOP: Switch to Plan mode and let me know when you're there. + +USER: In plan mode + +Perfect. Plan mode means I'll show you my plan, you approve it, then I execute. Let's do it. + +STOP: Ask me to build the quiz based on the requirements. + +USER: Build my quiz based on REQUIREMENTS.md + +ACTION: Read REQUIREMENTS.md, then create a plan showing: +- Components to create (quiz page, question component, results page) +- Styling approach based on their chosen style +- Quiz logic implementation (how answers map to results) +- Any images/icons to include + +Present the plan clearly with bullet points. + +Here's my plan. I'll create the quiz page, the question components, the results page, and style everything according to your preferences. + +STOP: Does this look right? Any questions before I start? + +USER: Looks good / [Questions] + +ACTION: Answer any questions they have, then tell them to switch back to normal mode (Shift+Tab) and you'll execute the plan. + +--- + +Building now. This takes a minute or two. You'll see me creating and editing files. Just let me work. + +ACTION: Build the full quiz application based on REQUIREMENTS.md: +1. Create the main quiz page in app/page.tsx +2. Create quiz components (QuizQuestion, Results, etc.) +3. Implement the quiz logic (tracking answers, calculating results) +4. Apply the visual style they chose +5. Add any images/icons based on their preference +6. Make sure the result display matches their choice (single vs percentages) + +Take your time and build it properly. This is the core deliverable. + +Done! Your quiz is built. Now let's see it in action. + +--- + +I'm going to start your quiz running and open it in your browser. + +ACTION: Run `npm run dev` in background in the quiz-project folder + +ACTION: Wait a few seconds for the server to start, then bash open http://localhost:3000 in browser + +Your quiz should now be open in your browser! + +This "localhost" link only works on YOUR computer - it's a temporary local version. We'll make it public later when we deploy. + +STOP: Do you see your quiz? + +USER: Yes! / [Issues] + +ACTION: If they have issues: +- Browser didn't open → Tell them to manually go to http://localhost:3000 +- Build errors → Check the terminal output, fix errors +- Blank page → Check for JavaScript errors in browser console + +--- + +Look at that! You have a working quiz! + +Take it for a spin - answer the questions and see your result. + +STOP: Try the quiz. Does it work? Do you get a result at the end? + +USER: Yes it works! / [Something's wrong] + +ACTION: If something's wrong, debug together. Common issues: +- Result not showing → Check the logic implementation +- Wrong personality mapping → Review the answer mappings +- Style issues → Can fix in iteration + +This is normal - first versions often need fixes. Let's get it working first, then polish. + +Amazing! You just built a web app. Let that sink in. + +--- + +The first version is never perfect. Let's iterate - make 2-3 changes until you love it. + +Here's a trick: you can take a screenshot, paste it here with **Ctrl+V** (not Cmd+V on Mac!), and tell me what to change. + +Circle something, point at it, whatever - just show me what you want different. + +This is also a great way to show me bugs. If something looks wrong, screenshot it and paste it here. + +If you're not sure what to change, here are some ideas: +- Add confetti or animation when you get your result +- Change the colors or fonts +- Tweak the wording on questions or results +- Add images for each result +- Change the layout or spacing +- Add a progress bar + +STOP: Take a screenshot of your quiz, paste it with Ctrl+V, and tell me what you'd like to change. + +USER: [Pastes screenshot and describes change] + +ACTION: Make the requested change to the code + +Done! Refresh your browser to see the update. + +STOP: How's that? Want to change anything else? + +USER: [More changes / Happy with it] + +ACTION: Keep iterating until they're satisfied. 2-3 rounds is typical. Common requests: +- Visual tweaks (colors, spacing, fonts) +- Animation additions +- Wording changes +- Layout adjustments + +--- + +Look at that - it's YOUR quiz, exactly how you want it. + +This is the iteration loop: screenshot → describe → change → refresh → repeat. + +This is how real product development works. And with AI, each iteration takes seconds instead of days. + +STOP: Happy with how it looks? + +USER: Yes + +--- + +**What you just learned:** How to go from requirements to working product, then iterate until it's exactly what you want. + +**Where else this applies:** +- Building any web project - landing pages, tools, prototypes +- Testing ideas quickly before investing in "real" development +- Working with designers/developers - clear visual feedback speeds everything up + +**Next up:** In 2.4, we save your code to GitHub. Right now it only exists on your computer. We're going to put it in the cloud so it's backed up and ready for deployment. + +STOP: Ready to save your work? Say "let's do GitHub" or type /start-2-4 + +USER: Let's do GitHub + +--- + +## Important Notes for Claude + +- The `npm run dev` command should run in background so the user can keep talking +- localhost:3000 is the default Next.js port - if something's already using it, Next.js will suggest another port +- When they paste screenshots, actually look at them and make specific changes +- The Ctrl+V note is important - Mac users often try Cmd+V first +- Keep iterations focused - don't suggest too many changes at once +- If the quiz has bugs, fix them before moving to visual polish +- Plan mode (Shift+Tab) is a real Claude Code feature - make sure they actually use it + +## Success Criteria + +- Next.js project is scaffolded in quiz-project folder +- Quiz is fully built based on REQUIREMENTS.md +- Dev server is running and quiz is viewable at localhost:3000 +- User has done at least 1-2 iterations +- User is satisfied with how their quiz looks +- User is ready for GitHub diff --git a/cc4e-course/lesson-modules/2.4-github/CLAUDE.md b/cc4e-course/lesson-modules/2.4-github/CLAUDE.md new file mode 100644 index 0000000..62c2f55 --- /dev/null +++ b/cc4e-course/lesson-modules/2.4-github/CLAUDE.md @@ -0,0 +1,165 @@ +# 2.4 GitHub + +Right now, your quiz only exists on your computer. + +If your laptop stops working or you delete the files, it's gone. And we can't put it on the internet yet. + +We need to save it to the cloud first. That's what GitHub is for. + +STOP: Have you used GitHub before? + +USER: Yes / No / A little + +--- + +GitHub is like Google Drive, but for code. + +It saves your code to the cloud, keeps a history of every change, and lets you undo mistakes. + +It's also how we'll get your quiz onto the internet - the service we use needs to grab your code from somewhere. + +Your project on GitHub is called a "repository" (or "repo" for short). You'll hear developers use that word a lot. + +STOP: Make sense? + +USER: Yes + +--- + +First, you need a GitHub account. + +STOP: Do you have a GitHub account? If not, I can open the signup page for you. + +USER: I have one / Open it for me / I'll do it myself + +ACTION: If they want it opened, run: `open https://github.com` (or bash open on Mac) + +STOP: Let me know when you have an account and are ready to continue. + +USER: Ready + +--- + +Now I need to connect to your GitHub account so I can save your code there. + +I'm going to download some tools that let me work with GitHub directly - so you never have to type scary commands. + +This might open your browser to log in - just follow the prompts and come back when it's done. + +ACTION: Set up GitHub CLI: + +1. Check if already installed: +``` +gh --version +``` + +2. If NOT installed: + - On Mac: `brew install gh` + - If brew fails or not on Mac: Tell user to go to https://cli.github.com and download manually, then come back + +3. Once installed, authenticate (run in background to avoid blocking): +```bash +gh auth login --web --git-protocol https > /tmp/gh-auth.log 2>&1 & +sleep 2 +cat /tmp/gh-auth.log +``` + +4. Read the output to get the one-time code, then open the device auth page: +```bash +open https://github.com/login/device +``` + +5. Tell user: "I just opened a page in your browser. Enter this code: [CODE FROM OUTPUT]. Click Authorize, then let me know when you're done." + +STOP: Let me know when you've authorized it. + +USER: Done + +ACTION: Verify authentication worked: +```bash +gh auth status +``` + +If successful, continue. If not authenticated, troubleshoot: +- They may not have completed the browser flow - ask them to try again +- The background process may have timed out - run the auth command again + +--- + +Now let's save your code to GitHub. I'll make it private by default so only you can see it. + +ACTION: Run the following commands in order: + +1. Navigate to the quiz-project folder: +``` +cd [path to quiz-project] +``` + +2. Initialize git (if not already done): +``` +git init +``` + +3. Add all files: +``` +git add . +``` + +4. Create initial commit: +``` +git commit -m "Initial commit - coffee personality quiz" +``` + +5. Create GitHub repo and push: +``` +gh repo create quiz-project --private --source=. --push +``` + +Done! Your code is now saved to GitHub. Developers call this "pushing" your code - you're pushing it up to the cloud. + +Let me open it for you so you can see it. + +ACTION: Get the repo URL and open it: +``` +gh repo view --web +``` +(This opens the GitHub repo in your browser) + +STOP: Do you see your project on GitHub? + +USER: Yes! + +--- + +Your quiz is now backed up and ready to go live. + +From now on, whenever you want to save your work, just ask me to "push to GitHub" and I'll save your latest changes. + +There's a lot more to GitHub - collaboration, version history, branching - and there will be a full module on it in the future. But for now, the important thing is: your code lives somewhere it can be accessed to put on the internet. + +That's exactly what we're doing next. + +**Next up:** In 2.5, we put your quiz on the internet! We're going to connect GitHub to a service called Vercel, and you'll get a real URL you can share with anyone. This is the finish line. + +STOP: Ready to go live? Say "let's go" or type /start-2-5 + +USER: Let's go + +--- + +## Important Notes for Claude + +- GitHub CLI (gh) is the easiest way to handle auth - avoid asking users to set up SSH keys +- The `--private` flag is important - users don't want their quiz code public by default +- If they already have a repo named quiz-project, gh will error - help them pick a different name +- The `gh repo view --web` command is much cleaner than trying to construct the URL +- If brew isn't available, cli.github.com has installers for all platforms +- Next.js projects already have a .gitignore so node_modules won't be committed + +## Success Criteria + +- User has a GitHub account +- GitHub CLI is installed and authenticated +- Code is committed and pushed to a private GitHub repository +- User can see their repo on github.com +- User understands they can ask to "push to GitHub" to save future changes diff --git a/cc4e-course/lesson-modules/2.5-go-live/CLAUDE.md b/cc4e-course/lesson-modules/2.5-go-live/CLAUDE.md new file mode 100644 index 0000000..3116ebe --- /dev/null +++ b/cc4e-course/lesson-modules/2.5-go-live/CLAUDE.md @@ -0,0 +1,253 @@ +# 2.5 Go Live + +This is it. The final step. + +Your quiz is built, polished, and saved to GitHub. Now we put it on the internet so anyone can visit it. + +Developers call this "deploying" - you're deploying your app to the web. You'll hear that word a lot. + +STOP: Ready to go live? + +USER: Yes + +--- + +Vercel is a free service that puts your code on the internet. + +It's basically the home base of vibecoding. + +You give it your GitHub project, and it turns it into a real website with a real URL. + +It's made by the same people who make Next.js (the framework we used), so they work together perfectly. + +STOP: Sound good? + +USER: Yes + +--- + +First, you need a Vercel account. + +STOP: Want me to open vercel.com for you? I recommend signing up with your GitHub account - it makes everything connect automatically. + +USER: Yes / I'll do it myself + +ACTION: If they want it opened, run: `open https://vercel.com` + +STOP: Let me know when you've created an account. Make sure to sign up with GitHub! + +USER: Done + +--- + +Just like with GitHub, I'm going to download tools that let me work with Vercel directly. + +This will open your browser to log in - just follow the prompts. + +ACTION: Set up Vercel CLI: + +1. Check if already installed: +``` +vercel --version +``` + +2. If NOT installed: +``` +npm i -g vercel +``` + +3. Once installed, authenticate (run in background to avoid blocking): +```bash +vercel login > /tmp/vercel-auth.log 2>&1 & +sleep 3 +cat /tmp/vercel-auth.log +``` + +4. Read the output to get the device URL with code, then open it: +```bash +open "https://vercel.com/oauth/device?user_code=[CODE FROM OUTPUT]" +``` + +5. Tell user: "I just opened Vercel in your browser. Click Authorize, then let me know when you're done." + +STOP: Let me know when you've authorized it. + +USER: Done + +ACTION: Verify authentication worked: +```bash +vercel whoami +``` + +If successful, continue. If not authenticated, troubleshoot: +- They may not have completed the browser flow - ask them to try again +- The background process may have timed out - run the login command again + +--- + +Now let's put your quiz on the internet. + +ACTION: Deploy to Vercel: + +1. Navigate to the quiz-project folder: +``` +cd [path to quiz-project] +``` + +2. Deploy to production: +``` +vercel --prod --yes +``` + +The `--yes` flag accepts all the defaults so you don't have to answer questions. The `--prod` flag means it goes live immediately. + +Wait for the deploy to complete - it takes about a minute. Watch for the URL in the output. + +Vercel is building your quiz and putting it on the internet now... + +Done! Look for the URL in the output - it'll look something like `quiz-project-abc123.vercel.app`. + +--- + +Your URL is: [Copy the URL from the deploy output] + +That's YOUR website. On the real internet. Anyone can visit it. + +Let me open it for you. + +ACTION: Open the deployed URL in the browser using bash open + +STOP: Do you see your quiz live on the internet? + +USER: Yes! + +--- + +Open that URL on your phone. It should work there too - same quiz, any device. + +STOP: Does it work on your phone? + +USER: Yes! + +--- + +Now for the real test: send that link to a friend. Text it to someone right now. When they react, that's the feeling of shipping something real. + +Let's acknowledge what just happened. + +You built a real web application. You put it on the internet. You have a URL that works on any device. You did this without writing a single line of code yourself. + +That's vibecoding. That's the future. + +STOP: How does that feel? + +USER: [Response] + +--- + +Here's what you now know: + +**Plan** → Get clear on what you're building +**Build** → Let AI create it +**Iterate** → Refine until it's right +**Save** → Back it up to GitHub +**Go Live** → Put it on the internet (deploy) + +This is the loop. You can build anything with this loop. + +STOP: Make sense? + +USER: Yes + +--- + +One more thing: what if you want to update your quiz later? + +Here's the flow: make changes on your computer, ask me to "push to GitHub," and Vercel will automatically update your live website. + +That's it. Vercel watches your GitHub and auto-deploys whenever you push changes. Magic. + +STOP: Pretty cool, right? + +USER: Yes + +--- + +What if you wanted to collect emails from people who take the quiz? You'd need a database to save them. That's a future module. + +What if you wanted to make sure it doesn't break? You'd need testing. Also a future module. + +What if you wanted a custom domain like yourquiz.com? Totally doable - Vercel makes it easy. + +The point is: you now have the foundation. Everything else builds on this. + +STOP: Feeling empowered? + +USER: Yes + +--- + +Want to build something else? Start a new project folder and follow this same process. + +The main things to tell Claude: you want to deploy on Vercel, and that it has Vercel CLI access. It'll know what to do. + +STOP: Any ideas brewing? + +USER: [Response] + +--- + +## Quick Plugs + +**To catch future modules:** Subscribe to the Claude Code for Everyone newsletter at ccforeveryone.com. That's also where you'll find in-depth guides and a community of non-technical Claude Code users like yourself. + +STOP: Want me to open that site so you can subscribe? + +USER: Yes / No + +ACTION: If yes, open https://ccforeveryone.com in browser + +This course was created by Carl Vellotti. If you have feedback, questions, or just want to say hi, he's always happy to hear from you: [X](https://x.com/carlvellotti) / [LinkedIn](https://www.linkedin.com/in/carlvellotti/) + +If you enjoyed this, share it with friends and coworkers who could use these skills! + +--- + +**Module 2 Complete!** + +You went from zero to deployed web app. You learned planning, building, iteration, GitHub, and going live. + +This is vibecoding. This is your new superpower. + +**What's next:** Future modules will cover databases, APIs, more complex apps, and connecting Claude to everything. But you now have the core skill - you can build and ship things. + +In the meantime, try building something for yourself. The best way to learn is to make something you actually want. + +STOP: Thanks for building with me. Now go make something cool. + +USER: (exits or explores) + +--- + +## Important Notes for Claude + +- **For CC4PMs version:** Change ccforeveryone.com to ccforpms.com +- The `vercel --prod --yes` flags are critical - `--yes` skips all interactive prompts, `--prod` deploys to production immediately +- Vercel auto-connects to the GitHub repo they created in 2.4 - this is why signing up with GitHub was important +- The URL format is usually `[project-name]-[random].vercel.app` +- Auto-deploy is set up automatically when they link GitHub during Vercel signup +- If deploy fails, common issues: + - Build errors → Check the Vercel dashboard for logs + - Not in the right directory → Make sure you're in quiz-project +- The celebration moment (sending to a friend) is crucial - let it breathe, don't rush past it + +## Success Criteria + +- User has a Vercel account (connected to GitHub) +- Vercel CLI is installed and authenticated +- Quiz is deployed and live on the internet +- User can access the quiz from their phone +- User has sent the link to at least one other person +- User understands the Plan → Build → Iterate → Save → Go Live loop +- User knows how to update: make changes → push to GitHub → auto-deploys +- User feels empowered to build more things diff --git a/cc4e-course/organized/.gitkeep b/cc4e-course/organized/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cc4e-course/reviews/.gitkeep b/cc4e-course/reviews/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cc4e-course/templates/leadership-update-template.md b/cc4e-course/templates/leadership-update-template.md new file mode 100644 index 0000000..38b3df9 --- /dev/null +++ b/cc4e-course/templates/leadership-update-template.md @@ -0,0 +1,45 @@ +# Leadership Update Template + +Use this format for all updates to the leadership team. + +--- + +## [Topic/Project Name] +**Date:** [Date] +**From:** [Your Name] + +### Status +[One line: On Track / At Risk / Blocked] + +### Summary +[2-3 sentences max. What do they need to know?] + +### Key Metrics +| Metric | Current | Target | Trend | +|--------|---------|--------|-------| +| [Metric 1] | [Value] | [Value] | [Up/Down/Flat] | +| [Metric 2] | [Value] | [Value] | [Up/Down/Flat] | + +### Progress Since Last Update +- [Bullet point accomplishment] +- [Bullet point accomplishment] +- [Bullet point accomplishment] + +### Blockers / Risks +- [Issue and what you need to resolve it] +- [Or "None" if things are smooth] + +### Next Steps +- [What you're doing next] +- [Timeline if relevant] + +### Decision Needed (if any) +[Clear ask with options if applicable] + +--- + +**Tips for using this template:** +- Keep it scannable - they have 2 minutes +- Lead with the most important information +- Be specific about asks +- No surprises - flag risks early