Loading
Angie Jones
This is a live streamed presentation. You will automatically follow the presenter and see the slide they're currently on.
Rizèl Scarlett
Angie Jones
block.github.io/goose
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
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
block.github.io/goose
block.github.io/goose
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
block.github.io/goose
Having a conversation with AI.
Non-deterministic
AI responses vary each time.
Hallucinations
AI makes up answers.
Go get my purse!
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.
block.github.io/goose
Create a workout app that counts jumping jacks
block.github.io/goose
block.github.io/goose
block.github.io/goose
a standard for AI agents to communicate with APIs, tools, and data sources
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 the YouTube Transcript MCP to fetch the transcript from this video: https://youtu.be/sTeoEFzVNSc.
Summarize it into a Markdown guide with these sections:
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
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
block.github.io/goose
block.github.io/goose
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.
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose
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
block.github.io/goose
Laundry. Homework. Sprint work. Meal prep.
Solution: clone
Subagents are temporary goose instances that are focused on handling specific tasks independently.
Each subagent is focused on
one task.
Parallel
Subagents Working at the same time.
Sequential
Subagents Working one after another.
Parallel
don't need each other's results to get started.
Sequential
needs the previous task's output
Parallel
"Analyze separate parts of the system"
Sequential
"First do X, then use that result to do Y"
1️⃣ Design database schema
2️⃣ Build API endpoints
3️⃣ Create frontend login flow
Mix both:
Some tasks parallel → for speed.
Some sequential → for dependency.
via natural language prompts
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.
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.
block.github.io/goose
Requirements:
- Use subagents
- must be full stack
- think: do you need a planner? frontend? architect?
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
block.github.io/goose
block.github.io/goose
block.github.io/goose
Ever wrote the perfect prompt…
and couldn’t recreate it again?
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?
A way to capture,
re-use, and share your best AI workflows.
Your great-grandma wrote down:
- when to add the ingredients
- the ingredients
- the measurements
Prompts
Settings
Model choice
Sequence & context
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.7version: "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.7instructions: |
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.7prompt: |
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.7prompt: |
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.7prompt: |
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.7prompt: |
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.7Build and schedule in UI
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose
block.github.io/goose