chore(aaif): rename a bunch of repository references (#8152)
Signed-off-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Michael Neale <michael.neale@gmail.com> continuing migration to aaif
This commit is contained in:
@@ -27,17 +27,17 @@ goose Mobile requires deep access to your device. Use at your own risk — best
|
||||
|
||||
## Installation
|
||||
- **Pre-built APK:** Install quickly via [Firebase distribution link](https://appdistribution.firebase.google.com/pub/i/3f111ea732d5f7f6).
|
||||
- **Build from Source:** Developer instructions are in the [goose Mobile repository](https://github.com/block/goose-mobile).
|
||||
- **Build from Source:** Developer instructions are in the [goose Mobile repository](https://github.com/aaif-goose/goose-mobile).
|
||||
|
||||
|
||||
## Extending goose Mobile
|
||||
goose Mobile supports the **mobile MCP** system, which lets it use tools from other apps without leaving context — e.g., fetching weather data via a weather extension.
|
||||
|
||||
Sample code and setup instructions are in the repository [README](https://github.com/block/goose-mobile).
|
||||
Sample code and setup instructions are in the repository [README](https://github.com/aaif-goose/goose-mobile).
|
||||
|
||||
## Contribute
|
||||
We welcome contributions! See the [Contributing Guide](https://github.com/block/goose-mobile/blob/main/CONTRIBUTING.md) for details.
|
||||
We welcome contributions! See the [Contributing Guide](https://github.com/aaif-goose/goose-mobile/blob/main/CONTRIBUTING.md) for details.
|
||||
|
||||
---
|
||||
|
||||
For more scenarios, instructions, and development setup, visit the [goose Mobile repository](https://github.com/block/goose-mobile).
|
||||
For more scenarios, instructions, and development setup, visit the [goose Mobile repository](https://github.com/aaif-goose/goose-mobile).
|
||||
@@ -69,7 +69,7 @@ The list of experimental features may change as goose development progresses. So
|
||||
<Card
|
||||
title="GitHub Issues"
|
||||
description="Report bugs, request features, or contribute to the development of experimental features."
|
||||
link="https://github.com/block/goose/issues"
|
||||
link="https://github.com/aaif-goose/goose/issues"
|
||||
/>
|
||||
<Card
|
||||
title="Discord Community"
|
||||
|
||||
@@ -103,4 +103,4 @@ From the Desktop app's Gateway settings, you can:
|
||||
## Additional Resources
|
||||
|
||||
- [Telegram Bot API Documentation](https://core.telegram.org/bots)
|
||||
- [Gateway PR #7199](https://github.com/block/goose/pull/7199)
|
||||
- [Gateway PR #7199](https://github.com/aaif-goose/goose/pull/7199)
|
||||
|
||||
@@ -55,14 +55,14 @@ import { PanelLeft } from 'lucide-react';
|
||||
Run the following command to install the latest version of goose on macOS:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
This script will fetch the latest version of goose and set it up on your system.
|
||||
|
||||
If you'd like to install without interactive configuration, disable `CONFIGURE`:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
:::tip Updating goose
|
||||
@@ -107,14 +107,14 @@ import { PanelLeft } from 'lucide-react';
|
||||
Run the following command to install the goose CLI on Linux:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
This script will fetch the latest version of goose and set it up on your system.
|
||||
|
||||
If you'd like to install without interactive configuration, disable `CONFIGURE`:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
:::tip Updating goose
|
||||
@@ -155,20 +155,20 @@ import { PanelLeft } from 'lucide-react';
|
||||
Run the installation command in your chosen environment:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
|
||||
To install without interactive configuration, disable `CONFIGURE`:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
**PowerShell Installation:**
|
||||
Download the PowerShell installation script to your current directory.
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/block/goose/main/download_cli.ps1" -OutFile "download_cli.ps1";
|
||||
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1";
|
||||
```
|
||||
Then run the script to install goose:
|
||||
```powershell
|
||||
@@ -220,7 +220,7 @@ import { PanelLeft } from 'lucide-react';
|
||||
|
||||
3. Run the goose installation script:
|
||||
```bash
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
:::tip
|
||||
If you encounter any issues on download, you might need to install `bzip2` to extract the downloaded file:
|
||||
@@ -233,7 +233,7 @@ import { PanelLeft } from 'lucide-react';
|
||||
If you'd like to install without interactive configuration, disable `CONFIGURE`:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
If needed, add goose to your path:
|
||||
@@ -417,7 +417,7 @@ just generate-manpages
|
||||
|
||||
This creates ROFF-formatted manpages in `target/man/` (e.g., `goose.1`, `goose-session.1`) that can be installed to `/usr/share/man/man1/` to provide offline documentation via the `man` command.
|
||||
|
||||
Manpage generation requires the goose source repository and is intended for distribution packagers preparing packages for Fedora, Debian, and other Linux distributions. See the [generate_manpages.rs source](https://github.com/block/goose/blob/main/crates/goose-cli/src/bin/generate_manpages.rs) for implementation details.
|
||||
Manpage generation requires the goose source repository and is intended for distribution packagers preparing packages for Fedora, Debian, and other Linux distributions. See the [generate_manpages.rs source](https://github.com/aaif-goose/goose/blob/main/crates/goose-cli/src/bin/generate_manpages.rs) for implementation details.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ goose is compatible with a wide range of LLM providers, allowing you to choose a
|
||||
| [xAI](https://x.ai/) | Access to xAI's Grok models including grok-3, grok-3-mini, and grok-3-fast with 131,072 token context window. | `XAI_API_KEY`, `XAI_HOST` (optional) |
|
||||
|
||||
:::tip Prompt Caching for Claude Models
|
||||
goose automatically enables Anthropic's [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) when using Claude models via Anthropic, Amazon Bedrock, Databricks, OpenRouter, and LiteLLM providers. This adds `cache_control` markers to requests, which can reduce costs for longer conversations by caching frequently-used context. See the [provider implementations](https://github.com/block/goose/tree/main/crates/goose/src/providers) for technical details.
|
||||
goose automatically enables Anthropic's [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) when using Claude models via Anthropic, Amazon Bedrock, Databricks, OpenRouter, and LiteLLM providers. This adds `cache_control` markers to requests, which can reduce costs for longer conversations by caching frequently-used context. See the [provider implementations](https://github.com/aaif-goose/goose/tree/main/crates/goose/src/providers) for technical details.
|
||||
:::
|
||||
|
||||
### CLI Providers
|
||||
@@ -664,7 +664,7 @@ Groq offers several open source models that support tool calling, including:
|
||||
- **llama-3.3-70b-versatile** - Meta's Llama 3.3 model for versatile applications
|
||||
- **llama-3.1-8b-instant** - Meta's Llama 3.1 model for fast inference
|
||||
|
||||
For the complete list of supported Groq models, see [groq.json](https://github.com/block/goose/blob/main/crates/goose/src/providers/declarative/groq.json).
|
||||
For the complete list of supported Groq models, see [groq.json](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/providers/declarative/groq.json).
|
||||
|
||||
To set up Groq with goose, follow these steps:
|
||||
|
||||
@@ -1283,7 +1283,7 @@ Reasoning output can be useful for understanding how the model arrived at its an
|
||||
|
||||
---
|
||||
|
||||
If you have any questions or need help with a specific provider, feel free to reach out to us on [Discord](https://discord.gg/goose-oss) or on the [goose repo](https://github.com/block/goose).
|
||||
If you have any questions or need help with a specific provider, feel free to reach out to us on [Discord](https://discord.gg/goose-oss) or on the [goose repo](https://github.com/aaif-goose/goose).
|
||||
|
||||
|
||||
[providers]: /docs/getting-started/providers
|
||||
|
||||
@@ -27,7 +27,7 @@ ACP sessions are saved to goose's session history where you can access and manag
|
||||
:::
|
||||
|
||||
:::tip Reference Implementation
|
||||
The [goose for VS Code](/docs/experimental/vs-code-extension) extension uses ACP to communicate with goose. See the [vscode-goose](https://github.com/block/vscode-goose) repository for implementation details.
|
||||
The [goose for VS Code](/docs/experimental/vs-code-extension) extension uses ACP to communicate with goose. See the [vscode-goose](https://github.com/aaif-goose/vscode-goose) repository for implementation details.
|
||||
:::
|
||||
|
||||
## Setup in ACP Clients
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Understand codebases with semantic analysis and call graphs
|
||||
sidebar_position: 111
|
||||
---
|
||||
|
||||
The [Developer extension](/docs/mcp/developer-mcp) includes an `analyze` tool that helps you understand code structure, track symbol usage, and explore call graphs across your codebase. It's automatically available when the Developer extension is enabled and supports file types for [multiple programming languages](https://github.com/block/goose/blob/main/crates/goose-mcp/src/developer/analyze/languages/mod.rs).
|
||||
The [Developer extension](/docs/mcp/developer-mcp) includes an `analyze` tool that helps you understand code structure, track symbol usage, and explore call graphs across your codebase. It's automatically available when the Developer extension is enabled and supports file types for [multiple programming languages](https://github.com/aaif-goose/goose/blob/main/crates/goose-mcp/src/developer/analyze/languages/mod.rs).
|
||||
|
||||
<details>
|
||||
<summary>Example analysis: Tracking a function across files</summary>
|
||||
|
||||
@@ -81,7 +81,7 @@ GOOSE_TOOLSHIM: true
|
||||
GOOSE_CLI_MIN_PRIORITY: 0.2
|
||||
|
||||
# Recipe Configuration
|
||||
GOOSE_RECIPE_GITHUB_REPO: "block/goose-recipes"
|
||||
GOOSE_RECIPE_GITHUB_REPO: "aaif-goose/goose-recipes"
|
||||
|
||||
# Search Path Configuration
|
||||
GOOSE_SEARCH_PATHS:
|
||||
|
||||
@@ -24,7 +24,7 @@ goose is designed to be forked and customized. You can create your own "distro"
|
||||
|
||||
The full guide lives in the repo root since you'll need to work at the code level to build a custom distribution:
|
||||
|
||||
👉 **[CUSTOM_DISTROS.md](https://github.com/block/goose/blob/main/CUSTOM_DISTROS.md)**
|
||||
👉 **[CUSTOM_DISTROS.md](https://github.com/aaif-goose/goose/blob/main/CUSTOM_DISTROS.md)**
|
||||
|
||||
It covers:
|
||||
|
||||
@@ -53,4 +53,4 @@ GOOSE_PROVIDER: ollama
|
||||
GOOSE_MODEL: qwen3-coder:latest
|
||||
```
|
||||
|
||||
See the [full guide](https://github.com/block/goose/blob/main/CUSTOM_DISTROS.md) for more scenarios including corporate API key distribution, audience-specific builds, and custom UIs.
|
||||
See the [full guide](https://github.com/aaif-goose/goose/blob/main/CUSTOM_DISTROS.md) for more scenarios including corporate API key distribution, audience-specific builds, and custom UIs.
|
||||
|
||||
@@ -586,7 +586,7 @@ These variables control recipe discovery and management.
|
||||
| Variable | Purpose | Values | Default |
|
||||
|----------|---------|---------|---------|
|
||||
| `GOOSE_RECIPE_PATH` | Additional directories to search for recipes | Colon-separated paths on Unix, semicolon-separated on Windows | None |
|
||||
| `GOOSE_RECIPE_GITHUB_REPO` | GitHub repository to search for recipes | Format: "owner/repo" (e.g., "block/goose-recipes") | None |
|
||||
| `GOOSE_RECIPE_GITHUB_REPO` | GitHub repository to search for recipes | Format: "owner/repo" (e.g., "aaif-goose/goose-recipes") | None |
|
||||
| `GOOSE_RECIPE_RETRY_TIMEOUT_SECONDS` | Global timeout for recipe success check commands | Integer (seconds) | Recipe-specific default |
|
||||
| `GOOSE_RECIPE_ON_FAILURE_TIMEOUT_SECONDS` | Global timeout for recipe on_failure commands | Integer (seconds) | Recipe-specific default |
|
||||
|
||||
|
||||
@@ -90,16 +90,16 @@ The following default templates can be customized.
|
||||
|
||||
| Template | Description | Applies To |
|
||||
|----------|-------------|------------|
|
||||
| [system.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/system.md) | General system prompt defining goose's role, capabilities, and response format | Desktop and CLI |
|
||||
| [apps_create.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/apps_create.md) | Prompt for generating new standalone apps (in development) | Desktop only |
|
||||
| [apps_iterate.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/apps_iterate.md) | Prompt for updating existing standalone apps (in development) | Desktop only |
|
||||
| [compaction.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/compaction.md) | Prompt for summarizing conversation history when context limits are reached | Desktop and CLI |
|
||||
| [permission_judge.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/permission_judge.md) | Prompt for analyzing tool operations for read-only detection | Desktop and CLI |
|
||||
| [plan.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/plan.md) | Instructions for creating detailed, actionable plans with clarifying questions | CLI only |
|
||||
| [recipe.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/recipe.md) | Prompt for generating recipe files from conversations | Desktop and CLI |
|
||||
| [subagent_system.md](https://github.com/block/goose/blob/main/crates/goose/src/prompts/subagent_system.md) | System prompt for subagents spawned to handle specific tasks | Desktop and CLI |
|
||||
| [system.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/system.md) | General system prompt defining goose's role, capabilities, and response format | Desktop and CLI |
|
||||
| [apps_create.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/apps_create.md) | Prompt for generating new standalone apps (in development) | Desktop only |
|
||||
| [apps_iterate.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/apps_iterate.md) | Prompt for updating existing standalone apps (in development) | Desktop only |
|
||||
| [compaction.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/compaction.md) | Prompt for summarizing conversation history when context limits are reached | Desktop and CLI |
|
||||
| [permission_judge.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/permission_judge.md) | Prompt for analyzing tool operations for read-only detection | Desktop and CLI |
|
||||
| [plan.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/plan.md) | Instructions for creating detailed, actionable plans with clarifying questions | CLI only |
|
||||
| [recipe.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/recipe.md) | Prompt for generating recipe files from conversations | Desktop and CLI |
|
||||
| [subagent_system.md](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompts/subagent_system.md) | System prompt for subagents spawned to handle specific tasks | Desktop and CLI |
|
||||
|
||||
Customizable templates are enumerated in the `TEMPLATE_REGISTRY` array in [`prompt_template.rs`](https://github.com/block/goose/blob/main/crates/goose/src/prompt_template.rs).
|
||||
Customizable templates are enumerated in the `TEMPLATE_REGISTRY` array in [`prompt_template.rs`](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/prompt_template.rs).
|
||||
|
||||
### Template Variable Syntax
|
||||
|
||||
|
||||
@@ -767,7 +767,7 @@ Built-in template parameters are automatically supported and don't need to be de
|
||||
|
||||
## Validation Rules
|
||||
|
||||
Validation rules from [`validate_recipe.rs`](https://github.com/block/goose/blob/main/crates/goose/src/recipe/validate_recipe.rs) are enforced when loading recipes and used by the [`goose recipe validate`](/docs/guides/goose-cli-commands#recipe) subcommand:
|
||||
Validation rules from [`validate_recipe.rs`](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/recipe/validate_recipe.rs) are enforced when loading recipes and used by the [`goose recipe validate`](/docs/guides/goose-cli-commands#recipe) subcommand:
|
||||
|
||||
### Recipe-Level Validation
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ You can turn your current goose session into a reusable recipe that includes the
|
||||
|
||||
|
||||
<TabItem value="generator" label="Recipe Generator">
|
||||
Use the online [Recipe Generator](https://block.github.io/goose/recipe-generator) tool to create a recipe. First choose your preferred format:
|
||||
Use the online [Recipe Generator](https://goose-docs.ai/recipe-generator) tool to create a recipe. First choose your preferred format:
|
||||
|
||||
- **URL Format**: Generates a shareable link that opens a session in goose Desktop
|
||||
- **YAML Format**: Generates YAML content that you can save to file and then run in goose CLI
|
||||
|
||||
@@ -50,7 +50,7 @@ All configuration is via environment variables. Defaults are designed to be secu
|
||||
|
||||
### File System
|
||||
|
||||
The [seatbelt sandbox profile](https://github.com/block/goose/blob/main/ui/desktop/src/sandbox/index.ts) blocks write operations to these sensitive files:
|
||||
The [seatbelt sandbox profile](https://github.com/aaif-goose/goose/blob/main/ui/desktop/src/sandbox/index.ts) blocks write operations to these sensitive files:
|
||||
|
||||
- `~/.ssh/` - Prevent SSH key tampering
|
||||
- `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`, `~/.zprofile` - Prevent shell config injection
|
||||
|
||||
@@ -27,7 +27,7 @@ These checks provide a safeguard, not a guarantee. They detect known patterns bu
|
||||
|
||||
When enabled, goose uses a multi-layered approach to detect threats before they run:
|
||||
|
||||
1. **Tool call is intercepted and analyzed** - When goose prepares to execute a tool, the security system extracts the tool parameter text and checks it against [threat patterns](https://github.com/block/goose/blob/main/crates/goose/src/security/patterns.rs). If ML-based detection is enabled, it also uses machine learning to analyze the semantic content of the tool call and recent conversation messages to better understand context and reduce false positives.
|
||||
1. **Tool call is intercepted and analyzed** - When goose prepares to execute a tool, the security system extracts the tool parameter text and checks it against [threat patterns](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/security/patterns.rs). If ML-based detection is enabled, it also uses machine learning to analyze the semantic content of the tool call and recent conversation messages to better understand context and reduce false positives.
|
||||
2. **Risk is assessed** - Detected threats are assigned confidence scores
|
||||
3. **Execution pauses** - Threats that exceed your configured threshold need your decision
|
||||
4. **Security alert appears** - The alert displays the confidence level, a description of the finding, and a unique finding ID. For example:
|
||||
|
||||
@@ -375,7 +375,7 @@ import agentCoordination from '@site/blog/2025-08-14-agent-coordination-patterns
|
||||
type: 'tutorial',
|
||||
title: 'Tutorial: Using Subagents',
|
||||
description: 'Spin up a team of subagents to build a fully functional app',
|
||||
thumbnailUrl: 'https://block.github.io/goose/assets/images/tutorial-using-subagents-ef265627024db73e73d80e5799ed0c1a.png',
|
||||
thumbnailUrl: 'https://goose-docs.ai/assets/images/tutorial-using-subagents-ef265627024db73e73d80e5799ed0c1a.png',
|
||||
linkUrl: '/docs/tutorials/subagents',
|
||||
date: '2026-01-27',
|
||||
duration: '1 hour'
|
||||
|
||||
@@ -48,7 +48,7 @@ The goose CLI and desktop apps are under active and continuous development. To g
|
||||
Or you can run the [installation](/docs/getting-started/installation) script again:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
To check your current goose version, use the following command:
|
||||
@@ -95,7 +95,7 @@ The goose CLI and desktop apps are under active and continuous development. To g
|
||||
Or you can run the [installation](/docs/getting-started/installation) script again:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
To check your current goose version, use the following command:
|
||||
@@ -139,7 +139,7 @@ The goose CLI and desktop apps are under active and continuous development. To g
|
||||
Or you can run the [installation](/docs/getting-started/installation) script again in **Git Bash**, **MSYS2**, or **PowerShell** to update the goose CLI natively on Windows:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
To check your current goose version, use the following command:
|
||||
@@ -154,7 +154,7 @@ The goose CLI and desktop apps are under active and continuous development. To g
|
||||
To update your WSL installation, use `goose update` or run the installation script again via WSL:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
@@ -13,7 +13,7 @@ import GooseDesktopInstaller from '@site/src/components/GooseDesktopInstaller';
|
||||
<YouTubeShortEmbed videoUrl="https://www.youtube.com/embed/7Vn_Rixi3tQ" />
|
||||
|
||||
|
||||
This tutorial covers how to add the [Council of Mine MCP Server](https://github.com/block/mcp-council-of-mine) as a goose extension featuring 9 LLM council members with distinct personalities who debate topics, vote on each other's opinions, and generate synthesized conclusions through AI-powered deliberation. This is great for helping you make a decision.
|
||||
This tutorial covers how to add the [Council of Mine MCP Server](https://github.com/aaif-goose/mcp-council-of-mine) as a goose extension featuring 9 LLM council members with distinct personalities who debate topics, vote on each other's opinions, and generate synthesized conclusions through AI-powered deliberation. This is great for helping you make a decision.
|
||||
|
||||
:::tip Quick Install
|
||||
<Tabs groupId="interface">
|
||||
@@ -23,7 +23,7 @@ This tutorial covers how to add the [Council of Mine MCP Server](https://github.
|
||||
<TabItem value="cli" label="goose CLI">
|
||||
**Command**
|
||||
```sh
|
||||
uvx --from git+https://github.com/block/mcp-council-of-mine mcp_council_of_mine
|
||||
uvx --from git+https://github.com/aaif-goose/mcp-council-of-mine mcp_council_of_mine
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -43,7 +43,7 @@ Note that you'll need [uv](https://docs.astral.sh/uv/#installation) installed on
|
||||
description="LLM debate"
|
||||
type="stdio"
|
||||
command="uvx"
|
||||
args={["--from", "git+https://github.com/block/mcp-council-of-mine", "mcp_council_of_mine"]}
|
||||
args={["--from", "git+https://github.com/aaif-goose/mcp-council-of-mine", "mcp_council_of_mine"]}
|
||||
/>
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="goose CLI">
|
||||
@@ -51,7 +51,7 @@ Note that you'll need [uv](https://docs.astral.sh/uv/#installation) installed on
|
||||
name="Council of Mine"
|
||||
description="LLM debate"
|
||||
type="stdio"
|
||||
command="uvx --from git+https://github.com/block/mcp-council-of-mine mcp_council_of_mine"
|
||||
command="uvx --from git+https://github.com/aaif-goose/mcp-council-of-mine mcp_council_of_mine"
|
||||
timeout={300}
|
||||
/>
|
||||
</TabItem>
|
||||
|
||||
@@ -96,7 +96,7 @@ Go goose, go goose!
|
||||
|
||||
If that’s not amazing idk what is …
|
||||
|
||||
🚀 to get started visit block.github.io/goose_
|
||||
🚀 to get started visit goose-docs.ai_
|
||||
|
||||
|
||||
### goose Output
|
||||
|
||||
@@ -12,7 +12,7 @@ import CLIExtensionInstructions from '@site/src/components/CLIExtensionInstructi
|
||||
<YouTubeShortEmbed videoUrl="https://www.youtube.com/embed/_WMm4kDYMog" />
|
||||
|
||||
:::warning Known Limitation
|
||||
The Fetch extension [does not work](https://github.com/block/goose/issues/1184) with Google models (e.g. gemini-2.0-flash) because this extension uses `format: uri` in its JSON schema which Google doesn't support.
|
||||
The Fetch extension [does not work](https://github.com/aaif-goose/goose/issues/1184) with Google models (e.g. gemini-2.0-flash) because this extension uses `format: uri` in its JSON schema which Google doesn't support.
|
||||
:::
|
||||
|
||||
This tutorial covers how to add the [Fetch MCP Server](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch) as a goose extension to retrieve and process content from the web.
|
||||
|
||||
@@ -98,7 +98,7 @@ In this example, goose sends a LinkedIn post draft to gotoHuman for approval usi
|
||||
Send this blog draft about goose to gotoHuman for review using my `n8n news to post` form.
|
||||
|
||||
Include today’s date as the timestamp, these links:
|
||||
[goose Docs: https://block.github.io/goose/, gotoHuman: https://gotohuman.com/],
|
||||
[goose Docs: https://goose-docs.ai/, gotoHuman: https://gotohuman.com/],
|
||||
summarize it as ‘Introducing goose’s integration with gotoHuman for human approvals,’
|
||||
and here’s the draft:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Add Speech MCP Server as a goose Extension
|
||||
unlisted: true
|
||||
---
|
||||
|
||||
Unlist per https://github.com/block/goose/issues/5431
|
||||
Unlist per https://github.com/aaif-goose/goose/issues/5431
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
@@ -10,7 +10,7 @@ import YouTubeShortEmbed from '@site/src/components/YouTubeShortEmbed';
|
||||
|
||||
<YouTubeShortEmbed videoUrl="https://www.youtube.com/embed/gddEgvCLrgU" />
|
||||
|
||||
This tutorial covers how to add the [VS Code MCP Server](https://github.com/block/vscode-mcp) as a goose extension to enable VS Code integration, file operations, and development workflow management.
|
||||
This tutorial covers how to add the [VS Code MCP Server](https://github.com/aaif-goose/vscode-mcp) as a goose extension to enable VS Code integration, file operations, and development workflow management.
|
||||
|
||||
:::tip Quick Install
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Let's begin 🚀
|
||||
Run the following command to install goose:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -71,7 +71,7 @@ Let's begin 🚀
|
||||
Run the following command to install the goose CLI on Linux:
|
||||
|
||||
```sh
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -93,7 +93,7 @@ Let's begin 🚀
|
||||
Run the following command in **Git Bash**, **MSYS2**, or **PowerShell** to install the goose CLI natively on Windows:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
|
||||
Learn about prerequisites in the [installation guide](/docs/getting-started/installation).
|
||||
|
||||
@@ -111,7 +111,7 @@ The bug report feature opens a structured GitHub issue template to help you prov
|
||||
For CLI users, navigate directly to the GitHub repository:
|
||||
|
||||
```
|
||||
https://github.com/block/goose/issues/new?template=bug_report.md
|
||||
https://github.com/aaif-goose/goose/issues/new?template=bug_report.md
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -135,7 +135,7 @@ The feature request system helps you suggest improvements and new functionality
|
||||
Navigate directly to the GitHub repository:
|
||||
|
||||
```
|
||||
https://github.com/block/goose/issues/new?template=feature_request.md
|
||||
https://github.com/aaif-goose/goose/issues/new?template=feature_request.md
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
@@ -365,7 +365,7 @@ Blocked malicious package: package-name@1.0.0 (npm). OSV MAL advisories: MAL-202
|
||||
Steps to resolve:
|
||||
1. **Find an alternative**: Look for similar extensions in the [extensions directory][extensions-directory] or [PulseMCP](https://www.pulsemcp.com/servers)
|
||||
2. **Optional verification**: Verify the source of the blocked extension or the package name/publisher
|
||||
3. **Report false positives**: If you believe this is an error, please [open an issue](https://github.com/block/goose/issues)
|
||||
3. **Report false positives**: If you believe this is an error, please [open an issue](https://github.com/aaif-goose/goose/issues)
|
||||
|
||||
This security check only applies to locally-executed external extensions that use PyPI (`uvx`) or NPM (`npx`). The check uses real-time data from the OSV database; if the security service is unavailable, extensions will still install normally.
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
- name: Install goose CLI
|
||||
run: |
|
||||
mkdir -p /home/runner/.local/bin
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh \
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh \
|
||||
| GOOSE_VERSION=REPLACE_WITH_VERSION CONFIGURE=false GOOSE_BIN_DIR=/home/runner/.local/bin bash
|
||||
echo "/home/runner/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
@@ -158,7 +158,7 @@ steps:
|
||||
- name: Install goose CLI
|
||||
run: |
|
||||
mkdir -p /home/runner/.local/bin
|
||||
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh \
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh \
|
||||
| GOOSE_VERSION=REPLACE_WITH_VERSION CONFIGURE=false GOOSE_BIN_DIR=/home/runner/.local/bin bash
|
||||
echo "/home/runner/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ In this guide, we build an MCP server using the [Python SDK for MCP][mcp-python]
|
||||
You can check out other example servers in the [MCP servers repository][mcp-servers]. MCP SDKs are also available for other common languages, such as [TypeScript][mcp-typescript] and [Kotlin][mcp-kotlin].
|
||||
|
||||
:::info
|
||||
goose supports Tools, Resources, and Prompts from the [Model Context Protocol](https://modelcontextprotocol.io/). See [`mcp_client.rs`](https://github.com/block/goose/blob/main/crates/goose/src/agents/mcp_client.rs) for the supported protocol version and client capabilities.
|
||||
goose supports Tools, Resources, and Prompts from the [Model Context Protocol](https://modelcontextprotocol.io/). See [`mcp_client.rs`](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/agents/mcp_client.rs) for the supported protocol version and client capabilities.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -348,7 +348,7 @@ goose supports advanced MCP features that can enhance your extensions.
|
||||
|
||||
**Getting Started:**
|
||||
- Use the `sampling/createMessage` method in your MCP server to request AI assistance
|
||||
- [goose's implementation](https://github.com/block/goose/blob/main/crates/goose/src/agents/mcp_client.rs) currently supports text and image content types
|
||||
- [goose's implementation](https://github.com/aaif-goose/goose/blob/main/crates/goose/src/agents/mcp_client.rs) currently supports text and image content types
|
||||
- goose automatically advertises sampling capability to all MCP servers
|
||||
|
||||
**Use Cases:** Document summarization, smart search filtering, code analysis, data insights
|
||||
|
||||
@@ -12,7 +12,7 @@ This guide covers two Docker-related scenarios:
|
||||
|
||||
You can build goose from the source file within a Docker container. This approach not only provides security benefits by creating an isolated environment but also enhances consistency and portability. For example, if you need to troubleshoot an error on a platform you don't usually work with (such as Ubuntu), you can easily debug it using Docker.
|
||||
|
||||
To begin, you will need to modify the [`Dockerfile` and `docker-compose.yml` files](https://github.com/block/goose/tree/main/documentation/docs/docker) to suit your requirements. Some changes you might consider include:
|
||||
To begin, you will need to modify the [`Dockerfile` and `docker-compose.yml` files](https://github.com/aaif-goose/goose/tree/main/documentation/docs/docker) to suit your requirements. Some changes you might consider include:
|
||||
|
||||
- **Required:** Setting your API key, provider, and model in the `docker-compose.yml` file as environment variables because the keyring settings do not work on Ubuntu in Docker. This example uses Google Gemini.
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ In goose, enable the [Summon extension](/docs/mcp/summon-mcp) to load Agent Skil
|
||||
Give goose a single prompt that describes what you want to test:
|
||||
|
||||
```
|
||||
Using the Playwright CLI skill, open block.github.io/goose, click on the Docs menu, click on Context Engineering,
|
||||
Using the Playwright CLI skill, open goose-docs.ai, click on the Docs menu, click on Context Engineering,
|
||||
then click on Using Skills and generate a test with video and traces
|
||||
```
|
||||
|
||||
@@ -111,7 +111,7 @@ await page.getByRole('link', { name: 'Docs' }).click();
|
||||
|
||||
### What goose does
|
||||
|
||||
1. Opens the browser: `playwright-cli open block.github.io/goose`
|
||||
1. Opens the browser: `playwright-cli open goose-docs.ai`
|
||||
2. Starts recording: `playwright-cli video-start` and `playwright-cli tracing-start`
|
||||
3. Takes snapshots to find elements: `playwright-cli snapshot`
|
||||
4. Performs clicks: `playwright-cli click <ref>`
|
||||
@@ -134,7 +134,7 @@ The generated test might look like:
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test('navigate to Using Skills guide via docs menu', async ({ page }) => {
|
||||
await page.goto('https://block.github.io/goose');
|
||||
await page.goto('https://goose-docs.ai');
|
||||
await expect(page).toHaveTitle(/goose/);
|
||||
|
||||
// Click on Docs in the navigation
|
||||
|
||||
@@ -24,9 +24,9 @@ Copy and paste this in your terminal to download the Ralph Loop recipes:
|
||||
```bash
|
||||
mkdir -p ~/.config/goose/recipes
|
||||
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/ralph-loop.sh -o ~/.config/goose/recipes/ralph-loop.sh
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/ralph-work.yaml -o ~/.config/goose/recipes/ralph-work.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/ralph-review.yaml -o ~/.config/goose/recipes/ralph-review.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/ralph-loop.sh -o ~/.config/goose/recipes/ralph-loop.sh
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/ralph-work.yaml -o ~/.config/goose/recipes/ralph-work.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/ralph-review.yaml -o ~/.config/goose/recipes/ralph-review.yaml
|
||||
|
||||
chmod +x ~/.config/goose/recipes/ralph-loop.sh
|
||||
```
|
||||
|
||||
@@ -24,14 +24,14 @@ Copy the snippet below and paste it in your terminal. This will download the mai
|
||||
```sh
|
||||
mkdir -p ~/.config/goose/recipes/subrecipes
|
||||
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/rpi-research.yaml -o ~/.config/goose/recipes/rpi-research.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/rpi-plan.yaml -o ~/.config/goose/recipes/rpi-plan.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/rpi-implement.yaml -o ~/.config/goose/recipes/rpi-implement.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/rpi-iterate.yaml -o ~/.config/goose/recipes/rpi-iterate.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/rpi-research.yaml -o ~/.config/goose/recipes/rpi-research.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/rpi-plan.yaml -o ~/.config/goose/recipes/rpi-plan.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/rpi-implement.yaml -o ~/.config/goose/recipes/rpi-implement.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/rpi-iterate.yaml -o ~/.config/goose/recipes/rpi-iterate.yaml
|
||||
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-codebase-locator.yaml -o ~/.config/goose/recipes/subrecipes/rpi-codebase-locator.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-codebase-analyzer.yaml -o ~/.config/goose/recipes/subrecipes/rpi-codebase-analyzer.yaml
|
||||
curl -sL https://raw.githubusercontent.com/block/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-pattern-finder.yaml -o ~/.config/goose/recipes/subrecipes/rpi-pattern-finder.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-codebase-locator.yaml -o ~/.config/goose/recipes/subrecipes/rpi-codebase-locator.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-codebase-analyzer.yaml -o ~/.config/goose/recipes/subrecipes/rpi-codebase-analyzer.yaml
|
||||
curl -sL https://raw.githubusercontent.com/aaif-goose/goose/main/documentation/src/pages/recipes/data/recipes/subrecipes/rpi-pattern-finder.yaml -o ~/.config/goose/recipes/subrecipes/rpi-pattern-finder.yaml
|
||||
```
|
||||
</details>
|
||||
|
||||
@@ -134,7 +134,7 @@ I start the prompt with the `/research_codebase` command followed by a topic wri
|
||||
```
|
||||
|
||||
|
||||
This command invokes the **[RPI Research Codebase](https://raw.githubusercontent.com/block/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-research.yaml)** recipe, whose job is very strict:
|
||||
This command invokes the **[RPI Research Codebase](https://raw.githubusercontent.com/aaif-goose/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-research.yaml)** recipe, whose job is very strict:
|
||||
|
||||
- Document what exists
|
||||
- Do not suggest changes
|
||||
@@ -189,7 +189,7 @@ It's important to do each phase in a new session to keep the LLM laser focused o
|
||||
/create_plan a removal of the Tool Selection Strategy feature
|
||||
```
|
||||
|
||||
The **[RPI Create Plan](https://raw.githubusercontent.com/block/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-plan.yaml)** recipe starts by reading the research document goose created.
|
||||
The **[RPI Create Plan](https://raw.githubusercontent.com/aaif-goose/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-plan.yaml)** recipe starts by reading the research document goose created.
|
||||
|
||||
Then it did three key things:
|
||||
|
||||
@@ -231,7 +231,7 @@ At this point, the plan became the source of truth. The key shift here is that w
|
||||
|
||||
The plan is explicit enough that someone else could execute it. That's not an accident. Remember that the implementation will be in a fresh new session, so the plan must have enough context to actually execute it.
|
||||
|
||||
Again, you as the human need to step in here to review the plan and make sure it's solid. If there's anything amiss, instead of starting over you can run the **[RPI Iterate Plan](https://raw.githubusercontent.com/block/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-iterate.yaml)** plan (`/iterate_plan`) with details on what's wrong. goose will then read the existing plan, research only what needs rethinking, propose targeted updates, and edit the plan accordingly.
|
||||
Again, you as the human need to step in here to review the plan and make sure it's solid. If there's anything amiss, instead of starting over you can run the **[RPI Iterate Plan](https://raw.githubusercontent.com/aaif-goose/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-iterate.yaml)** plan (`/iterate_plan`) with details on what's wrong. goose will then read the existing plan, research only what needs rethinking, propose targeted updates, and edit the plan accordingly.
|
||||
|
||||
## Session 3: Implement
|
||||
|
||||
@@ -241,7 +241,7 @@ Only after research and planning are complete should you move to implementation.
|
||||
/implement_plan thoughts/plans/2025-12-23-remove-tool-selection-strategy.md
|
||||
```
|
||||
|
||||
The **[RPI Implement Plan](https://raw.githubusercontent.com/block/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-implement.yaml)** recipe is intentionally boring. In fact, I fell asleep while goose was running it. Implementation should feel mechanical. If it feels creative, something upstream is missing. But knowing that you have a rock solid plan, I advise you to go do something else with your time while goose works (unless there are manual steps in the plan).
|
||||
The **[RPI Implement Plan](https://raw.githubusercontent.com/aaif-goose/goose/refs/heads/main/documentation/src/pages/recipes/data/recipes/rpi-implement.yaml)** recipe is intentionally boring. In fact, I fell asleep while goose was running it. Implementation should feel mechanical. If it feels creative, something upstream is missing. But knowing that you have a rock solid plan, I advise you to go do something else with your time while goose works (unless there are manual steps in the plan).
|
||||
|
||||
It will read the plan completely, execute the phases in order, run verification after each phase, and update the checkboxes directly in the plan file as it goes.
|
||||
|
||||
@@ -251,7 +251,7 @@ That last bit was really helpful because my context window filled up partway thr
|
||||
|
||||
For 10 phases of work that spanned 32 files, the Research phase took 9 minutes, the Plan phase took 4 minutes, and the Implement phase took 39 minutes. So in total, this took just shy of an hour... 52 minutes to be exact. This included goose working and testing as well as me answering questions.
|
||||
|
||||
Definitely not a fast process. BUT! When I put up [this PR](https://github.com/block/goose/pull/6250), the build passed and the separate Code Review Agent didn't have a single comment. That's just how well done the work was.
|
||||
Definitely not a fast process. BUT! When I put up [this PR](https://github.com/aaif-goose/goose/pull/6250), the build passed and the separate Code Review Agent didn't have a single comment. That's just how well done the work was.
|
||||
|
||||
Had I done this without AI, it would have likely taken me several hours of work as the feature was complex and deeply integrated. And had I had AI jump straight to implementation, I have no doubt it would have surely drifted and messed something up.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user