You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+32-14
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ goose
9
9
</p>
10
10
11
11
<palign="center">
12
-
<ahref="#usage">Usage</a> •
12
+
<ahref="#usage">Usage</a> •
13
13
<ahref="#configuration">Configuration</a> •
14
14
<ahref="#tips">Tips</a> •
15
15
<ahref="#faq">FAQ</a> •
@@ -25,7 +25,7 @@ To solve problems, `goose` breaks down instructions into sequences of tasks and
25
25
26
26
27
27
## Usage
28
-
### Installation
28
+
### Installation
29
29
30
30
To install `goose`, we recommend `pipx`
31
31
@@ -36,7 +36,7 @@ brew install pipx
36
36
pipx ensurepath
37
37
```
38
38
39
-
Then you can install `goose` with
39
+
Then you can install `goose` with
40
40
41
41
```sh
42
42
pipx install goose-ai
@@ -45,7 +45,7 @@ pipx install goose-ai
45
45
There is an early version of a VS Code extension with goose support you can try here: https://github.com/square/goose-vscode - more to come soon.
46
46
47
47
### LLM provider access setup
48
-
`goose` works on top of LLMs (you need to bring your own LLM). By default, `goose` uses `openai` as LLM provider. You need to set OPENAI_API_KEY as an environment variable if you would like to use `openai`.
48
+
`goose` works on top of LLMs (you need to bring your own LLM). By default, `goose` uses `openai` as LLM provider. You need to set OPENAI_API_KEY as an environment variable if you would like to use `openai`.
49
49
```sh
50
50
export OPENAI_API_KEY=your_open_api_key
51
51
```
@@ -80,10 +80,10 @@ goose session resume
80
80
81
81
## Configuration
82
82
83
-
`goose` can detect what LLM and toolkits it can work with from the configuration file `~/.config/goose/profiles.yaml` automatically.
83
+
`goose` can detect what LLM and toolkits it can work with from the configuration file `~/.config/goose/profiles.yaml` automatically.
84
84
85
85
### Configuration options
86
-
Example:
86
+
Example:
87
87
88
88
```yaml
89
89
default:
@@ -124,12 +124,30 @@ Rules designed to control or manage the output of the model. Moderators that cur
124
124
125
125
#### toolkits
126
126
127
-
`goose` can be extended with toolkits, and out of the box there are some available:
127
+
`goose` can be extended with toolkits, and out of the box there are some available:
128
128
129
+
* `developer`: for general-purpose development capabilities, including plan management, shell execution, and file operations, with default shell strategies like using ripgrep.
129
130
* `screen`: for letting goose take a look at your screen to help debug or work on designs (gives goose eyes)
130
131
* `github`: for awareness and suggestions on how to use github
131
132
* `repo_context`: for summarizing and understanding a repository you are working in.
132
133
134
+
#### Configuring goose per repo
135
+
136
+
If you are using the `developer` toolkit, `goose` adds the content from `.goosehints`
137
+
file in working directory to the system prompt of the `developer` toolkit. The hints
138
+
file is meant to provide additional context about your project. The context can be
139
+
user-specific or at the project level in which case, you
140
+
can commit it to git. `.goosehints` file is Jinja templated so you could have something
141
+
like this:
142
+
```
143
+
Here is an overview of how to contribute:
144
+
{% include 'CONTRIBUTING.md' %}
145
+
146
+
The following justfile shows our common commands:
147
+
```just
148
+
{% include 'justfile' %}
149
+
```
150
+
133
151
### Examples
134
152
#### provider as `anthropic`
135
153
@@ -158,33 +176,33 @@ Here are some collected tips we have for working efficiently with `goose`
158
176
159
177
- **`goose` can and will edit files**. Use a git strategy to avoid losing anything - such as staging your
160
178
personal edits and leaving `goose` edits unstaged until reviewed. Or consider using individual commits which can be reverted.
161
-
- **`goose` can and will run commands**. You can ask it to check with you first if you are concerned. It will check commands for safety as well.
179
+
- **`goose` can and will run commands**. You can ask it to check with you first if you are concerned. It will check commands for safety as well.
162
180
- You can interrupt `goose` with `CTRL+C` to correct it or give it more info.
163
181
- `goose`works best when solving concrete problems - experiment with how far you need to break that problem
164
-
down to get `goose` to solve it. Be specific! E.g. it will likely fail to `"create a banking app"`,
182
+
down to get `goose` to solve it. Be specific! E.g. it will likely fail to `"create a banking app"`,
165
183
but probably does a good job if prompted with `"create a Fastapi app with an endpoint for deposit and withdrawal
166
184
and with account balances stored in mysql keyed by id"`
167
185
- If `goose` doesn't have enough context to start with, it might go down the wrong direction. Tell it
168
186
to read files that you are referring to or search for objects in code. Even better, ask it to summarize
169
187
them for you, which will help it set up its own next steps.
170
188
- Refer to any objects in files with something that is easy to search for, such as `"the MyExample class"
171
189
- `goose`*loves* to know how to run tests to get a feedback loop going, just like you do. If you tell it how you test things locally and quickly, it can make use of that when working on your project
172
-
- You can use `goose` for tasks that would require scripting at times, even looking at your screen and correcting designs/helping you fix bugs, try asking it to help you in a way you would ask a person.
190
+
- You can use `goose` for tasks that would require scripting at times, even looking at your screen and correcting designs/helping you fix bugs, try asking it to help you in a way you would ask a person.
173
191
- `goose`will make mistakes, and go in the wrong direction from times, feel free to correct it, or start again.
174
192
- You can tell `goose` to run things for you continuously (and it will iterate, try, retry) but you can also tell it to check with you before doing things (and then later on tell it to go off on its own and do its best to solve).
175
193
- `goose`can run anywhere, doesn't have to be in a repo, just ask it!
176
194
177
195
178
196
### Examples
179
197
180
-
Here are some examples that have been used:
198
+
Here are some examples that have been used:
181
199
182
200
```
183
201
G❯ Looking at the in progress changes in this repo, help me finish off the feature. CONTRIBUTING.md shows how to run the tests.
184
202
```
185
203
186
204
```
187
-
G❯ In this golang project, I want you to add open telemetry to help me get started with it. Look in the moneymovements module, run the `just test` command to check things work.
205
+
G❯ In this golang project, I want you to add open telemetry to help me get started with it. Look in the moneymovements module, run the `just test` command to check things work.
188
206
```
189
207
190
208
```
@@ -196,7 +214,7 @@ G❯ This is a fresh checkout of a golang project. I do not have my golang envir
196
214
```
197
215
198
216
```
199
-
G❯ In this repo, I want you to look at how to add a new provider for azure.
217
+
G❯ In this repo, I want you to look at how to add a new provider for azure.
200
218
Some hints are in this github issue: https://github.com/square/exchange/issues
201
219
/4 (you can use gh cli to access it).
202
220
```
@@ -213,7 +231,7 @@ G❯ I want you to help me increase the test coverage in src/java... use mvn tes
213
231
214
232
## Open Source
215
233
216
-
Yes, `goose` is open source and always will be. `goose` is released under the ASL2.0 license meaning you can use it however you like.
234
+
Yes, `goose` is open source and always will be. `goose` is released under the ASL2.0 license meaning you can use it however you like.
217
235
See LICENSE.md for more details.
218
236
219
237
To run `goose` from source, please see `CONTRIBUTING.md` for instructions on how to set up your environment and you can then run `uv run `goose` session start`.
0 commit comments