Loading

Workshop: vibe coding with goose

Angie Jones

This is a live streamed presentation. You will automatically follow the presenter and see the slide they're currently on.

vibe coding with

Rizèl Scarlett
Angie Jones
block.github.io/goose
  1. Introduction to Agentic AI
  2. Tour of goose AI Agent
  3. Prompt Engineering
  4. Vibe Coding Challenge
  5. Model Context Protocol (MCP)
  6. Vibe Coding Challenge
  7. Using Agents with GitHub
  8. Subagents
  9. Vibe Coding Challenge
  10. Repeatable Agentic Workflows

Agenda

Agentic AI

block.github.io/goose

what is an AI agent?

block.github.io/goose
block.github.io/goose
block.github.io/goose

how does this work?

block.github.io/goose

user  +   agent  +  LLM

Agentic Runtime

angiejones.tech

angiejones.tech

"Fix the NullPointerException in my UserService.java file"

  user   +  agent   +   LLM  

angiejones.tech

User Request: "Fix the NullPointerException in my UserService.java file."


Available Tools:

1. read_file(file_path: str) → Returns the contents of the specified file.

2. analyze_code(file_content: str) → Identifies potential errors and suggests fixes.

3. edit_file(file_path: str, modifications: dict) → Applies code changes.

4. run_tests() → Executes the test suite and returns results.

 

  user   +  agent   +   LLM  

angiejones.tech

[
  {
    "tool": "read_file",
    "parameters": { 
       "file_path": "UserService.java"     }
  }
]

  user   +  agent   +   LLM  

angiejones.tech

executes

read_file()

  user   +  agent   +   LLM  

angiejones.tech

  user   +  agent   +   LLM  

{
  "tool": "edit_file",
  "parameters": {
    "file_path": "UserService.java",
    "modifications": {
      "line_number": 3,
      "replacement": "private Database db = new Database();"
    }
  }
}

angiejones.tech

executes

edit_file()

  user   +  agent   +   LLM  

angiejones.tech

{
  "tool": "run_tests",
  "parameters": {}
}

  user   +  agent   +   LLM  

angiejones.tech

{
  "tests_passed": true,
  "failed_tests": []
}

  user   +  agent   +   LLM  

angiejones.tech

"I’ve fixed the NullPointerException in UserService.java by initializing the db variable. All tests have passed. Let me know if you need further modifications!"

  user   +  agent   +   LLM  

let's get set up!

block.github.io/goose
block.github.io/goose

get links here:

download goose

LLM API Key

anthropic/claude-sonnet-4

🧭 tour of goose

block.github.io/goose

Create apps in html, javascript, and css when possible.
Create a new directory if you are building a new app.

NEVER run blocking server commands (node server.js, npm start, etc.) - provide commands for user to run separately.

block.github.io/goose

🫆goosehints

Prompt Engineering

block.github.io/goose

Having a conversation with AI.

Prompting

Non-deterministic

AI responses vary each time.

Challenges

Hallucinations

AI makes up answers.

Go get my purse!

Example

I want..

Which one?

The Problem

The instruction sounded clear, but wasn't specific enough

Concepts

Prompt Engineering

vs.

Context Exngineering


Prompt Engineering

writing clear, specific prompts.

Context Engineering

 giving enough info so your AI agent doesn’t have to guess.

Better Ask

Get gum from my Coach bag
It's on the top shelf, left side.
Check the inner pocket on the right.

Adopt the Mindset

- Specific

- No Essays

- Use version control

- Be ready to iterate

- Exercise Patience

Prompt Framework

 Problem/Goal → Context → Hypothesis → Ask → Boundary

Prompt Framework

Problem/Goal: whats happening
Context: background of what's true
Hypothesis: what you suspect
Ask: what you need

Boundary: what not to do

Prompt Framework

My GH Action runs twice per PR.  This only Only happens on forks. The event type might be wrong. Can you Show what’s causing the double trigger? But don't rewrite the workflow.

Goal

My GH Action runs twice per PR.

Context

 This only Only happens on forks.  

Hypothesis

The event type might be wrong.

Ask

Can you Show what’s causing the double trigger?

Boundary

Don't rewrite the whole workflow.

Vibe Coding Challenge #1

block.github.io/goose

Create a workout app that counts jumping jacks

let's vibe code!

🙋🏽‍♀️ Q&A 🙋🏻

block.github.io/goose

☕️ let's take a break ☕️ 

block.github.io/goose

Model Context Protocol

block.github.io/goose

a standard for AI agents to communicate with APIs, tools, and data sources

What is MCP?

block.github.io/goose
import { FastMCP } from "fastmcp";
import { z } from "zod";

const server = new FastMCP({
  name: "My Server",
  version: "1.0.0",
});

server.addTool({
  name: "add",
  description: "Add two numbers",
  parameters: z.object({
    a: z.number(),
    b: z.number(),
  }),
  execute: async (args) => {
    return String(args.a + args.b);
  },
});

server.start({
  transportType: "stdio",
});
block.github.io/goose
server.addTool({
  name: "get_latest_commit",
  description: "Fetches the latest commit message from a GitHub repository",
  parameters: z.object({
    owner: z.string(),
    repo: z.string(),
  }),
  execute: async ({ owner, repo }) => {
    try {
      const res = await fetch(
        `https://api.github.com/repos/${owner}/${repo}/commits`
      );
      const commits = await res.json();
      return { 
        content: [{ 
          type: "text", text: commits[0]?.commit?.message || "No commits" 
        }] 
      };
    } catch (e) {
      return { content: [{ type: "text", text: `Error: ${e.message}` }] };
    }
  },
});
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose

⚠️

be careful!

let's install the YouTube Transcript extension!

block.github.io/goose
block.github.io/goose

use goose with the YouTube Transcript MCP!

  1. Install uv: https://docs.astral.sh/uv/#installation
  2. Install YouTube Transcript MCP
  3. Create a new directory: learning-system/lessons
  4. Switch to the learning-systems directory in goose
  5. Prompt goose to summarize learnings:


    Use the YouTube Transcript MCP to fetch the transcript from this video: https://youtu.be/sTeoEFzVNSc.
    Summarize it into a Markdown guide with these sections:

  • Overview
  • Key Concepts Explained Simply
  • Code or Command Examples (if any)
  • What I Should Try Next

Save the markdown file to the ./lessons directory

block.github.io/goose

📝look over your markdown file

block.github.io/goose

🕵🏼‍♀️ let's analyze the

tool calls!

block.github.io/goose

use goose with the YouTube Transcript MCP!

repeat with a video on another topic you want to learn more about. have goose save as a new file in the same ./lessons directory

🙋🏽‍♀️ Q&A 🙋🏻

block.github.io/goose

Vibe Coding Challenge #2

block.github.io/goose

let's vibe code!

Plan then build a Learning System web app that automatically detects and loads any Markdown lessons in the ./lessons/ directory, then presents them as study cards with quizzes and progress tracking.

🥪 lunch time! 🥪

block.github.io/goose

✨ Show & Tell ✨

block.github.io/goose

🙋🏽‍♀️ Q&A 🙋🏻

block.github.io/goose

Agents with GitHub!

block.github.io/goose
block.github.io/goose

let's add to GitHub!

block.github.io/goose
block.github.io/goose

requires Personal Access Token

recommended for today

Have goose create a new repo and commit your Learning Platform project

let's vibe!

Subagents

block.github.io/goose

Laundry. Homework. Sprint work. Meal prep.

 

Solution: clone

Sunday Scaries 😩 

DupliKate

Subagents are temporary goose instances that are focused on handling specific tasks independently.

Subagents

  • Subagent 1: Research
  • Subagent 2: Tests
  • Subagent 3: frontend
  • Subagent 4: backend
  • Subagent 5: Docs

Subagents

Each subagent is focused on 

one task.

The Value

Parallel

Subagents Working at the same time.

Execution Types

Sequential

Subagents Working one after another.

Parallel

don't need each other's results to get started.

When to use

Sequential

needs the previous task's output

Parallel

"Analyze separate parts of the system"

Best suited for

Sequential

"First do X, then use that result to do Y"

1️⃣ Design database schema
2️⃣ Build API endpoints
3️⃣ Create frontend login flow

Dependencies

Mix both:
Some tasks parallel → for speed.
Some sequential → for dependency.

Hybrid

via natural language prompts

Configure Subagents

let's have 2 subagents work in parallel.

Subagent 1 will create a hello world html page that is blue.
Subagent 2 will create a hello world html page that is red.

show me the full conversation history.

Parallel Example

Use 2 subagents
- First, Subagent 1 will implement fizzbuzz using JavaScript
- Then, Subagent 2 will write one test for the fizzbuzz code in a different file.

Sequential Example

Vibe Coding Challenge #3

block.github.io/goose

Requirements:

- Use subagents

- must be full stack

- think: do you need a planner? frontend? architect?

Build a blog

Build a simple blog platform with sequential then parallel execution:

First
- Planner:Design basic blog structure with file storage.  Just give me the final result.

Then in parallel:
- Backend: Create blog API for posts (CRUD operations).  Just give me the final result.
- Frontend: Create blog interface with post list and forms. Just give me the final result.
- Tester: Write basic tests for the blog functionality.  Just give me the final result.

Make sure actual files are created and not just empty folders.
Use the developer extension

Build a blog

🙋🏽‍♀️ Q&A 🙋🏻

block.github.io/goose

☕️ let's take a break ☕️ 

block.github.io/goose

Recipes

block.github.io/goose

The Struggle

Ever wrote the perfect prompt…
and couldn’t recreate it again?

The Mystery

What made it work? 🤔

- Was it Claude Sonnet 4 or 4.5?

- Did I change the order of prompts?

- What context did I give it?

Recipes

A way to capture,

re-use, and share your best AI workflows.

Think family recipes

Your great-grandma wrote down:

- when to add the ingredients

- the ingredients

- the measurements

goose recipes

Prompts

Settings

Model choice

Sequence & context

From session

From UI

From YAML

version: "1.0.0"
title: "Simple Job Finder"
description: "Find actual open software engineering positions in Massachusetts for mid-level candidates"

instructions: |
  You are a Job Search Assistant. Find actual open software engineering positions in Massachusetts for mid-level candidates.
  
  Your primary job is to identify specific, currently available job openings. For each role you find, provide:
  - Company name
  - Job title
  - Key requirements
  - How to apply (if available)
  
  Also include:
  - Total number of open positions found
  - Top 3 skills appearing most frequently
  - 2 actionable next steps for applying
  
  Be specific about actual job openings, not general market trends.

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

The ID

version: "1.0.0"
title: "Simple Job Finder"
description: "Find actual open software engineering positions in Massachusetts for mid-level candidates"

instructions: |
  You are a Job Search Assistant. Find actual open software engineering positions in Massachusetts for mid-level candidates.
  
  Your primary job is to identify specific, currently available job openings. For each role you find, provide:
  - Company name
  - Job title
  - Key requirements
  - How to apply (if available)
  
  Also include:
  - Total number of open positions found
  - Top 3 skills appearing most frequently
  - 2 actionable next steps for applying
  
  Be specific about actual job openings, not general market trends.

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

Behavior

instructions: |
  You are a Job Search Assistant. Find actual open software engineering positions in Massachusetts for mid-level candidates.
  
  Your primary job is to identify specific, currently available job openings. For each role you find, provide:
  - Company name
  - Job title
  - Key requirements
  - How to apply (if available)
  
  Also include:
  - Total number of open positions found
  - Top 3 skills appearing most frequently
  - 2 actionable next steps for applying
  
  Be specific about actual job openings, not general market trends.

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

What it should do

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

The Extensions

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

Optional Prompts

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

Creative Levels

prompt: |
  Find me actual open software engineer positions for mid-level candidates in Boston that I can apply to right now. I want specific job openings. For each opening, tell me:
  - Who's hiring and what position
  - What skills they want
  - How to apply

extensions:
  - type: builtin
    name: developer
  - type: builtin
    name: computercontroller

activities:
  - "Searching job boards for software engineering positions"
  - "Analyzing job requirements and application details"
  - "Compiling list of specific open positions"

settings:
  temperature: 0.7

Sharing recipes

Your turn

Build and schedule in UI

🙋🏽‍♀️ Q&A 🙋🏻

block.github.io/goose

Agentic IDEs

block.github.io/goose

Join us on Discord

block.github.io/goose

block.github.io/goose

block.github.io/goose