feat: V1.0 (#734)
Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Wendy Tang <wendytang@squareup.com> Co-authored-by: Jarrod Sibbison <72240382+jsibbison-square@users.noreply.github.com> Co-authored-by: Alex Hancock <alex.hancock@example.com> Co-authored-by: Alex Hancock <alexhancock@block.xyz> Co-authored-by: Lifei Zhou <lifei@squareup.com> Co-authored-by: Wes <141185334+wesrblock@users.noreply.github.com> Co-authored-by: Max Novich <maksymstepanenko1990@gmail.com> Co-authored-by: Zaki Ali <zaki@squareup.com> Co-authored-by: Salman Mohammed <smohammed@squareup.com> Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com> Co-authored-by: Alec Thomas <alec@swapoff.org> Co-authored-by: lily-de <119957291+lily-de@users.noreply.github.com> Co-authored-by: kalvinnchau <kalvin@block.xyz> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Rizel Scarlett <rizel@squareup.com> Co-authored-by: bwrage <bwrage@squareup.com> Co-authored-by: Kalvin Chau <kalvin@squareup.com> Co-authored-by: Alice Hau <110418948+ahau-square@users.noreply.github.com> Co-authored-by: Alistair Gray <ajgray@stripe.com> Co-authored-by: Nahiyan Khan <nahiyan.khan@gmail.com> Co-authored-by: Alex Hancock <alexhancock@squareup.com> Co-authored-by: Nahiyan Khan <nahiyan@squareup.com> Co-authored-by: marcelle <1852848+laanak08@users.noreply.github.com> Co-authored-by: Yingjie He <yingjiehe@block.xyz> Co-authored-by: Yingjie He <yingjiehe@squareup.com> Co-authored-by: Lily Delalande <ldelalande@block.xyz> Co-authored-by: Adewale Abati <acekyd01@gmail.com> Co-authored-by: Ebony Louis <ebony774@gmail.com> Co-authored-by: Angie Jones <jones.angie@gmail.com> Co-authored-by: Ebony Louis <55366651+EbonyLouis@users.noreply.github.com>
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 564 KiB |
|
After Width: | Height: | Size: 482 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
@@ -0,0 +1,293 @@
|
||||
---
|
||||
draft: false
|
||||
title: "Screenshot-Driven Development"
|
||||
description: "AI Agent uses screenshots to assist in styling."
|
||||
date: 2024-11-22
|
||||
authors:
|
||||
- rizel
|
||||
---
|
||||
|
||||

|
||||
|
||||
I'm a developer at heart, so when I'm working on a personal project, the hardest part isn't writing code—it's making design decisions. I recently built a calendar user interface. I wanted to enhance its visual appeal, so I researched UI design trends like "glassmorphism" and "claymorphism."
|
||||
|
||||
However, I didn't want to spend hours implementing the CSS for each design trend, so I developed a faster approach: screenshot-driven development. I used an open source developer agent called [Goose](https://github.com/block/goose) to transform my user interfaces quickly.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
### My original calendar:
|
||||

|
||||
|
||||
### Goose prototyped the designs below:
|
||||

|
||||
|
||||
In this blog post, I'll show you how to quickly prototype design styles by letting Goose handle the CSS for you.
|
||||
>💡 Note: Your results might look different from my examples - that's part of the fun of generative AI! Each run can produce unique variations of these design trends.
|
||||
|
||||
## Get Started with Screenshot-Driven Development
|
||||
|
||||
### Step 1: Create your UI
|
||||
Let's create a basic UI to experiment with. Create an index.html file with the code below:
|
||||
|
||||
<details>
|
||||
<summary>Create an index.html file with the code below</summary>
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
margin: 0;
|
||||
background: linear-gradient(45deg, #6e48aa, #9c27b0);
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
}
|
||||
|
||||
.calendar {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 5px 20px rgba(0,0,0,0.1);
|
||||
width: 400px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 2px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.month {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
}
|
||||
|
||||
.days {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(7, 1fr);
|
||||
gap: 10px;
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.days-header {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(7, 1fr);
|
||||
gap: 10px;
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.days-header span {
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.day {
|
||||
aspect-ratio: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.day:hover {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
.day.today {
|
||||
background: #9c27b0;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.day.inactive {
|
||||
color: #ccc;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="calendar">
|
||||
<div class="header">
|
||||
<div class="month">November 2024</div>
|
||||
</div>
|
||||
<div class="days-header">
|
||||
<span>Sun</span>
|
||||
<span>Mon</span>
|
||||
<span>Tue</span>
|
||||
<span>Wed</span>
|
||||
<span>Thu</span>
|
||||
<span>Fri</span>
|
||||
<span>Sat</span>
|
||||
</div>
|
||||
<div class="days">
|
||||
<div class="day inactive">27</div>
|
||||
<div class="day inactive">28</div>
|
||||
<div class="day inactive">29</div>
|
||||
<div class="day inactive">30</div>
|
||||
<div class="day inactive">31</div>
|
||||
<div class="day">1</div>
|
||||
<div class="day">2</div>
|
||||
<div class="day">3</div>
|
||||
<div class="day">4</div>
|
||||
<div class="day">5</div>
|
||||
<div class="day">6</div>
|
||||
<div class="day">7</div>
|
||||
<div class="day">8</div>
|
||||
<div class="day">9</div>
|
||||
<div class="day">10</div>
|
||||
<div class="day">11</div>
|
||||
<div class="day">12</div>
|
||||
<div class="day">13</div>
|
||||
<div class="day today">14</div>
|
||||
<div class="day">15</div>
|
||||
<div class="day">16</div>
|
||||
<div class="day">17</div>
|
||||
<div class="day">18</div>
|
||||
<div class="day">19</div>
|
||||
<div class="day">20</div>
|
||||
<div class="day">21</div>
|
||||
<div class="day">22</div>
|
||||
<div class="day">23</div>
|
||||
<div class="day">24</div>
|
||||
<div class="day">25</div>
|
||||
<div class="day">26</div>
|
||||
<div class="day">27</div>
|
||||
<div class="day">28</div>
|
||||
<div class="day">29</div>
|
||||
<div class="day">30</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
</details>
|
||||
|
||||
Once saved, open the file in your browser. You should see a calendar!
|
||||
|
||||
### Step 2: Install Goose
|
||||
|
||||
```bash
|
||||
brew install pipx
|
||||
pipx ensurepath
|
||||
pipx install goose-ai
|
||||
```
|
||||
|
||||
### Step 3: Start a session
|
||||
|
||||
```bash
|
||||
goose session start
|
||||
```
|
||||
|
||||
#### Bring your own LLM
|
||||
|
||||
>Goose will prompt you to set up your API key when you first run this command. You can use various LLM providers like OpenAI or Anthropic
|
||||
|
||||
```bash
|
||||
export OPENAI_API_KEY=your_api_key
|
||||
# Or for other providers:
|
||||
export ANTHROPIC_API_KEY=your_api_key
|
||||
```
|
||||
|
||||
### Step 4: Enable the Screen toolkit
|
||||
Goose uses [toolkits](https://block.github.io/goose/plugins/plugins.html) to extend its capabilities. The [screen](https://block.github.io/goose/plugins/available-toolkits.html#6-screen-toolkit) toolkit lets Goose take and analyze screenshots.
|
||||
|
||||
To enable the Screen toolkit, add it to your Goose profile at ~/.config/goose/profiles.yaml.
|
||||
|
||||
> Your configuration might look slightly different depending on your LLM provider preferences.
|
||||
|
||||
|
||||
```yaml
|
||||
default:
|
||||
provider: openai
|
||||
processor: gpt-4o
|
||||
accelerator: gpt-4o-mini
|
||||
moderator: truncate
|
||||
toolkits:
|
||||
- name: developer
|
||||
requires: {}
|
||||
- name: screen
|
||||
requires: {}
|
||||
```
|
||||
|
||||
### Step 5: Prompt Goose to screenshot your UI
|
||||
Goose analyzes your UI through screenshots to understand its structure and elements. In your Gooses session, prompt Goose to take a screenshot by specifying which display your UI is on:
|
||||
|
||||
```bash
|
||||
Take a screenshot of display(1)
|
||||
```
|
||||
|
||||
> The display number is required - use display(1) for your main monitor or display(2) for a secondary monitor.
|
||||
|
||||
Upon success, Goose will run a `screencapture` command and save it as a temporary file.
|
||||
|
||||
### Step 6: Prompt Goose to transform your UI
|
||||
|
||||
Now, you can ask Goose to apply different design styles. Here are some of the prompts I gave Goose and the results it produced:
|
||||
|
||||
#### Glassmorphism
|
||||
|
||||
```bash
|
||||
Apply a glassmorphic effect to my UI
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
#### Neumorphism
|
||||
|
||||
```bash
|
||||
Apply neumorphic effects to my calendar and the dates
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
#### Claymorphism
|
||||
|
||||
```bash
|
||||
Please replace with a claymorphic effect
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
#### Brutalism
|
||||
|
||||
```bash
|
||||
Apply a brutalist effect please
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Learn More
|
||||
|
||||
Developing user interfaces is a blend of creativity and problem-solving. And I love that using Goose gives me more time to focus on creativity rather than wrestling with CSS for hours.
|
||||
|
||||
Beyond prototyping, Goose's ability to analyze screenshots can help developers identify and resolve UI bugs.
|
||||
|
||||
If you're interested in learning more, check out the [Goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource).
|
||||
|
||||
<head>
|
||||
<meta property="og:title" content="Screenshot-Driven Development" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://block.github.io/goose/blog/2024/11/22/screenshot-driven-development.html" />
|
||||
<meta property="og:description" content="AI Agent uses screenshots to assist in styling." />
|
||||
<meta property="og:image" content="https://block.github.io/goose/blog/images/screenshot-driven-development-blog/screenshot-driven-development.png" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="twitter:domain" content="block.github.io" />
|
||||
<meta name="twitter:title" content="Screenshot-Driven Development" />
|
||||
<meta name="twitter:description" content="AI Agent uses screenshots to assist in styling." />
|
||||
<meta name="twitter:image" content="https://block.github.io/goose/blog/images/screenshot-driven-development-blog/screenshot-driven-development.png" />
|
||||
</head>
|
||||
|
After Width: | Height: | Size: 721 KiB |
|
After Width: | Height: | Size: 497 KiB |
|
After Width: | Height: | Size: 258 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 501 KiB |
|
After Width: | Height: | Size: 122 KiB |
@@ -0,0 +1,64 @@
|
||||
---
|
||||
draft: false
|
||||
title: "Previewing Goose v1.0 Beta"
|
||||
description: "Goose v1.0 Beta is here! Learn about the latest features and improvements."
|
||||
date: 2024-12-06
|
||||
authors:
|
||||
- adewale
|
||||
---
|
||||
|
||||

|
||||
We are excited to share a preview of the new updates coming to Goose with Goose v1.0 Beta!
|
||||
|
||||
This major update comes with a bunch of new features and improvements that make Goose more powerful and user-friendly. Here are some of the key highlights.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
|
||||
## Exciting Features of Goose 1.0 Beta
|
||||
|
||||
### 1. Transition to Rust
|
||||
|
||||
The core of Goose has been rewritten in Rust. Why does this matter? Rust allows for a more portable and stable experience. This change means that Goose can run smoothly on different systems without the need for Python to be installed, making it easier for anyone to start using it.
|
||||
|
||||
### 2. Contextual Memory
|
||||
|
||||
Goose will remember previous interactions to better understand ongoing projects. This means you won’t have to keep repeating yourself. Imagine having a conversation with someone who remembers every detail—this is the kind of support Goose aims to offer.
|
||||
|
||||
### 3. Improved Plugin System
|
||||
|
||||
In Goose v1.0, the Goose toolkit system is being replaced with Systems. Systems are modular daemons that Goose can interact with dynamically. As a result, Goose will be able to support more complex plugins and integrations. This will make it easier to extend Goose with new features and functionality.
|
||||
|
||||
### 4. Headless mode
|
||||
|
||||
You can now run Goose in headless mode - this is useful for running Goose on servers or in environments where a graphical interface is not available.
|
||||
|
||||
```sh
|
||||
cargo run --bin goose -- run -i instructions.md
|
||||
```
|
||||
|
||||
### 5. Goose now has a GUI
|
||||
|
||||
Goose now has an electron-based GUI macOS application that provides and alternative to the CLI to interact with Goose and manage your projects.
|
||||
|
||||

|
||||
|
||||
### 6. Goose alignment with open protocols
|
||||
|
||||
Goose v1.0 Beta now uses a custom protocol, that is designed in parallel with [Anthropic’s Model Context Protocol](https://www.anthropic.com/news/model-context-protocol) (MCP) to communicate with Systems. This makes it possible for developers to create their own systems (e.g Jira, ) that Goose can integrate with.
|
||||
|
||||
Excited for many more feature updates and improvements? Stay tuned for more updates on Goose! Check out the [Goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource).
|
||||
|
||||
|
||||
<head>
|
||||
<meta property="og:title" content="Previewing Goose v1.0 Beta" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://block.github.io/goose/blog/2024/12/06/previewing-goose-v1.html" />
|
||||
<meta property="og:description" content="AI Agent uses screenshots to assist in styling." />
|
||||
<meta property="og:image" content="https://block.github.io/goose/blog/images/whats-new-in-goose-v1/goose-v1.0-beta.png" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="twitter:domain" content="block.github.io" />
|
||||
<meta name="twitter:title" content="Screenshot-Driven Development" />
|
||||
<meta name="twitter:description" content="AI Agent uses screenshots to assist in styling." />
|
||||
<meta name="twitter:image" content="https://block.github.io/goose/blog/images/whats-new-in-goose-v1/goose-v1.0-beta.png" />
|
||||
</head>
|
||||
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 210 KiB |
@@ -0,0 +1,67 @@
|
||||
---
|
||||
draft: false
|
||||
title: "Connecting AI Agents to Your Systems with MCP"
|
||||
date: 2024-12-10
|
||||
authors:
|
||||
- angie
|
||||
---
|
||||
|
||||

|
||||
|
||||
Open standards are a critical ingredient for interoperable systems. They have enabled most of the technologies that we all rely on. The ability to connect to the internet no matter where we are relies on open standards such as Wi-Fi, TCP/IP and DNS. When you receive an email in your Gmail account from an Outlook sender, it's the use of open standards like SMTP, IMAP, and POP3 that makes this seamless. One of the most transformative technologies of our lifetime - the internet - enables anyone to have their web page accessible to the entire world thanks to the HTTP and HTML standards.
|
||||
|
||||
We're in the early days of a new era in tech, one where companies are innovating and building practical AI solutions for the masses. To ensure the longevity of this technology, open standards will be essential in guiding the development of AI tools so that the diverse systems built by various companies can work together seamlessly.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
### The MCP Open Standard
|
||||
|
||||
Anthropic is leading the charge with the [Model Context Protocol (MCP)](https://modelcontextprotocol.io), an open standard that enables large language model (LLM) applications to connect with external systems, providing the necessary context for more informed and relevant AI interactions.
|
||||
|
||||
This is a game changer for AI agents such as [Goose](https://block.github.io/goose/), which can perform tasks autonomously - a significant leap beyond chatbots that only provide step-by-step instructions. However, to unlock the full potential of these AI agents, we need a standard method for connecting them to external data sources. MCP provides this foundation.
|
||||
|
||||
With MCP's standardized APIs and endpoints, Goose can integrate seamlessly into your systems, enhancing its ability to perform complex tasks like debugging, writing code, and running commands directly in your environment.
|
||||
|
||||

|
||||
|
||||
### What's Possible
|
||||
|
||||
Without MCP, every [Goose toolkit](https://block.github.io/goose/plugins/using-toolkits.html) developer would need to implement bespoke integrations with every system they need to connect to. Not only is this tedious and repetitive, but it delays the fun stuff.
|
||||
|
||||
Let's take a simple GitHub workflow, for example. Goose interacts directly with the GitHub API using custom scripts or configurations. Developers must configure Goose to authenticate with GitHub and specify endpoints for actions like fetching open pull requests or adding comments. Each integration requires manual setup and custom coding to handle authentication tokens, error handling, and API updates.
|
||||
|
||||
MCP simplifies the process by providing a standardized interface for accessing GitHub as a resource. Goose, acting as an [MCP client](https://modelcontextprotocol.io/clients), requests the necessary information (e.g., list of open pull requests) from an [MCP server](https://modelcontextprotocol.io/quickstart#general-architecture) configured to expose GitHub's capabilities. The MCP server handles authentication and communication with GitHub, abstracting away the complexity of API interactions. Goose can then focus on tasks like providing a detailed review comment or suggesting code changes.
|
||||
|
||||
### Join the Ecosystem
|
||||
|
||||
As MCP adoption expands, so does Goose’s potential to deliver even more powerful solutions for your organization. By [integrating Goose](https://block.github.io/goose/) into your workflows and [embracing MCP](https://modelcontextprotocol.io/introduction), you’re not just enhancing your own systems, you’re contributing to the growth of an ecosystem that makes AI tools more interoperable, efficient, and impactful.
|
||||
|
||||
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Connecting AI Agents to Your Systems with MCP</title>
|
||||
<meta name="description" content="Goose" />
|
||||
<meta name="keywords" content="MCP, Anthropic, AI Open Standards" />
|
||||
|
||||
|
||||
<!-- HTML Meta Tags -->
|
||||
<title>Connecting AI Agents to Your Systems with MCP</title>
|
||||
<meta name="description" content="Learn how MCP standardizes integrations and fosters an ecosystem for the future of AI-enabled tools." />
|
||||
|
||||
<!-- Facebook Meta Tags -->
|
||||
<meta property="og:url" content="https://block.github.io/goose/blog/2024/12/10/goose-mcp.html" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Connecting AI Agents to Your Systems with MCP" />
|
||||
<meta property="og:description" content="Learn how MCP standardizes integrations and fosters an ecosystem for the future of AI-enabled tools." />
|
||||
<meta property="og:image" content="https://block.github.io/goose/blog/images/goose-mcp.png" />
|
||||
|
||||
<!-- Twitter Meta Tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="twitter:domain" content="block.github.io" />
|
||||
<meta property="twitter:url" content="https://block.github.io/goose/blog/2024/12/10/goose-mcp.html" />
|
||||
<meta name="twitter:title" content="Connecting AI Agents to Your Systems with MCP" />
|
||||
<meta name="twitter:description" content="Learn how MCP standardizes integrations and fosters an ecosystem for the future of AI-enabled tools." />
|
||||
<meta name="twitter:image" content="https://block.github.io/goose/blog/images/goose-mcp.png" />
|
||||
</head>
|
||||
|
||||
|
After Width: | Height: | Size: 835 KiB |
@@ -0,0 +1,169 @@
|
||||
---
|
||||
draft: false
|
||||
title: "Resolving CI Issues with Goose: A Practical Walkthrough"
|
||||
description: "Leverage Goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly."
|
||||
date: 2024-12-11
|
||||
authors:
|
||||
- dalton
|
||||
---
|
||||
|
||||

|
||||
|
||||
Running into Continuous Integration (CI) failures in pull requests can be quite frustrating but they happen very often. In this post, we leverage the GitHub CLI (`gh`) using Goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
Before diving in, ensure you have the necessary tools set up.
|
||||
|
||||
### 1. Install and Authenticate GitHub CLI (`gh`)
|
||||
|
||||
You'll need the [GitHub CLI](https://cli.github.com/) `gh` to enable Goose's access to CI check run details.
|
||||
|
||||
```bash
|
||||
brew install gh
|
||||
gh auth login
|
||||
```
|
||||
|
||||
Follow the prompts to authenticate your account.
|
||||
|
||||
|
||||
### 2. Configure Goose
|
||||
Ensure Goose is configured and ready to interact with your repository and local tools. Specifically, you will need to configure a goose profile with the GitHub toolkit.
|
||||
|
||||
Update your `profiles.yaml` file in `~/.config/goose` with the necessary toolkits:
|
||||
|
||||
```yaml
|
||||
my-profile:
|
||||
provider: anthropic
|
||||
processor: claude-3-5-sonnet
|
||||
accelerator: claude-3-5-sonnet
|
||||
moderator: truncate
|
||||
toolkits:
|
||||
- name: developer
|
||||
requires: {}
|
||||
- name: github
|
||||
requires: {}
|
||||
```
|
||||
Start a session with the profile:
|
||||
|
||||
```bash
|
||||
goose session start --profile my-profile
|
||||
```
|
||||
If the profile’s toolkits are not correctly configured, Goose might fail to access `gh` commands.
|
||||
|
||||
## Resolving CI Failures with Goose
|
||||
Once everything is set up, we can now use Goose to tackle CI issues with the following steps:
|
||||
|
||||
### Step 1: Fetch CI Failure Details
|
||||
Ask Goose to retrieve information about the CI failures for a specific PR.
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
|
||||
Can you tell me about the CI failures on PR #11111 in the organization/repo repository? The check run ID is 123456.
|
||||
```
|
||||
|
||||
You can access a check run ID by clicking on a PR’s checks tab and selecting a failure. The ID will be available in the URL.
|
||||
|
||||
**Goose's Workflow:**
|
||||
|
||||
Goose will use the `gh` CLI to check run information and provide a detailed summary of the issues. Goose uses the GitHub CLI to:
|
||||
|
||||
- Fetch details about failed CI runs, including logs and annotations.
|
||||
- Provide a clear and actionable summary of issues.
|
||||
|
||||
**Example Command Goose Runs:**
|
||||
|
||||
```curl
|
||||
gh api -H "Accept: application/vnd.github+json" /repos/<owner>/<repo>/check-runs/<check-run-id>/annotations
|
||||
```
|
||||
|
||||
**Example Goose Output:**
|
||||
```mathematica
|
||||
Here are the details for Check Run ID 123456:
|
||||
|
||||
**Name**: CI-Build-All
|
||||
**Status**: completed
|
||||
**Conclusion**: failure
|
||||
|
||||
**Annotations Summary:**
|
||||
1. **ModuleA Test Failure**
|
||||
File: `ModuleATests`
|
||||
Line: 35
|
||||
Error: Mismatched parameter order in function call.
|
||||
|
||||
2. **ModuleB Test Failure**
|
||||
File: `ModuleBTests`
|
||||
Line: 64
|
||||
Error: Unexpected nil value encountered during initialization.
|
||||
|
||||
3. **ModuleC Test Failure**
|
||||
File: `ModuleCTests`
|
||||
Line: 98
|
||||
Error: Type mismatch in returned value. Expected 'String', found 'Int'.
|
||||
```
|
||||
### Step 2: Request Fixes from Goose
|
||||
Once Goose provides the failure details, ask it to resolve the issues directly.
|
||||
|
||||
Example Request:
|
||||
|
||||
```
|
||||
Can you fix these issues and stage the changes so I can review them? Do not add unnecessary code comments.
|
||||
```
|
||||
|
||||
**What Goose Does:**
|
||||
|
||||
- Applies fixes based on error messages.
|
||||
- Stages changes for review.
|
||||
|
||||
|
||||
**Example Goose Response:**
|
||||
```markdown
|
||||
I have fixed the following files and staged them:
|
||||
|
||||
- `ModuleATests`: Corrected the order of parameters in the function call.
|
||||
- `ModuleBTests`: Resolved the unexpected nil value encountered during initialization.
|
||||
- `ModuleCTests`: Adjusted the type mismatch in the returned value.
|
||||
|
||||
You can now review the staged changes.
|
||||
```
|
||||
|
||||
|
||||
### Step 3: Review the Changes
|
||||
Carefully review the staged changes to ensure they address the issues correctly and avoid unintended modifications.
|
||||
|
||||
**Things to Check:**
|
||||
|
||||
- No unnecessary comments (e.g., // Fix xyz).
|
||||
- No alterations to unrelated parts of the code.
|
||||
|
||||
|
||||
If needed, clean up or re-stage the changes before committing.
|
||||
|
||||
## Benefits of Using Goose
|
||||
Using Goose to resolve CI issues streamlines your workflow by:
|
||||
|
||||
- identifying issues and applying fixes with minimal manual effort.
|
||||
- integrating with tools like the GitHub CLI to validate changes.
|
||||
- handling repetitive CI debugging tasks while you focus on code quality.
|
||||
|
||||
Goose allows you to resolve CI failures efficiently, ensuring confidence in your workflow while reducing the effort required for debugging and testing.
|
||||
|
||||
Try it out, and let Goose handle the heavy lifting of CI debugging for you!
|
||||
|
||||
<head>
|
||||
<meta property="og:title" content="Resolving CI Issues with Goose: A Practical Walkthrough" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://block.github.io/goose/blog/2024/12/10/resolving-ci-issues.html" />
|
||||
<meta property="og:description" content="Leverage Goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly." />
|
||||
<meta property="og:image" content="https://block.github.io/goose/blog/images/resolving-ci-issues/goose-github-ci.png" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="twitter:domain" content="block.github.io" />
|
||||
<meta name="twitter:title" content="Resolving CI Issues with Goose: A Practical Walkthrough" />
|
||||
<meta name="twitter:description" content="Leverage Goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly." />
|
||||
<meta name="twitter:image" content="https://block.github.io/goose/blog/images/resolving-ci-issues/goose-github-ci.png" />
|
||||
</head>
|
||||
54
documentation/blog/authors.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
ebony:
|
||||
name: Ebony Louis
|
||||
title: Developer Advocate
|
||||
image_url: https://avatars.githubusercontent.com/u/55366651?v=4
|
||||
page: true
|
||||
socials:
|
||||
x: ebonylouis
|
||||
github: ebonylouis
|
||||
|
||||
rizel:
|
||||
name: Rizel Scarlett
|
||||
title: Staff Developer Advocate
|
||||
image_url: https://avatars.githubusercontent.com/u/22990146?v=4
|
||||
page: true
|
||||
socials:
|
||||
x: blackgirlbytes
|
||||
github: blackgirlbytes
|
||||
|
||||
adewale:
|
||||
name: Adewale Abati
|
||||
title: Staff Developer Advocate
|
||||
image_url: https://avatars.githubusercontent.com/u/4003538?v=4
|
||||
url: https://adewaleabati.com
|
||||
page: true
|
||||
socials:
|
||||
x: ace_kyd
|
||||
github: acekyd
|
||||
|
||||
dalton:
|
||||
name: Dalton Turner
|
||||
title: Software Engineer
|
||||
image_url: https://avatars.githubusercontent.com/u/78099245?v=4
|
||||
page: true
|
||||
socials:
|
||||
github: dalton-turner
|
||||
|
||||
tania:
|
||||
name: Tania Chakraborty
|
||||
title: Senior Technical Community Manager
|
||||
image_url: https://avatars.githubusercontent.com/u/126204004?v=4
|
||||
page: true
|
||||
socials:
|
||||
x: taniashiba
|
||||
github: taniashiba
|
||||
|
||||
angie:
|
||||
name: Angie Jones
|
||||
title: Head of Developer Relations
|
||||
image_url: https://avatars.githubusercontent.com/u/15972783?v=4
|
||||
url: https://angiejones.tech
|
||||
page: true
|
||||
socials:
|
||||
x: techgirl1908
|
||||
github: techgirl1908
|
||||
19
documentation/blog/tags.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
facebook:
|
||||
label: Facebook
|
||||
permalink: /facebook
|
||||
description: Facebook tag description
|
||||
|
||||
hello:
|
||||
label: Hello
|
||||
permalink: /hello
|
||||
description: Hello tag description
|
||||
|
||||
docusaurus:
|
||||
label: Docusaurus
|
||||
permalink: /docusaurus
|
||||
description: Docusaurus tag description
|
||||
|
||||
hola:
|
||||
label: Hola
|
||||
permalink: /hola
|
||||
description: Hola tag description
|
||||