Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .surface
Original file line number Diff line number Diff line change
Expand Up @@ -13159,6 +13159,7 @@ FLAG basecamp setup agents --no-stats type=bool
FLAG basecamp setup agents --profile type=string
FLAG basecamp setup agents --project type=string
FLAG basecamp setup agents --quiet type=bool
FLAG basecamp setup agents --remove type=bool
FLAG basecamp setup agents --stats type=bool
FLAG basecamp setup agents --styled type=bool
FLAG basecamp setup agents --todolist type=string
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,19 @@ To pick up a newer plugin version later, refresh the marketplace with

**Other agents:** Point your agent at [`skills/basecamp/SKILL.md`](skills/basecamp/SKILL.md) for Basecamp workflow coverage.

To remove the Basecamp-managed shared skill and coding-agent plugins without
removing Basecamp authentication, configuration, or data, run:

```bash
basecamp setup agents --remove
```

The command leaves user-authored skill directories and additional files alone.
It also keeps the `37signals` marketplace registration in Claude, which may serve
other plugins; remove it yourself with `claude plugin marketplace remove 37signals`.
The command uses the `codex` binary to inspect and remove the Codex plugin, so
that binary must still be installed.

**Agent discovery:** Every command supports `--help --agent` for structured JSON output (flags, gotchas, subcommands). Use `basecamp commands --json` for the full catalog.

See [install.md](install.md) for step-by-step setup instructions.
Expand Down
5 changes: 5 additions & 0 deletions internal/appctx/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package appctx

import (
"context"
"errors"
"fmt"
"net/http"
"os"
Expand Down Expand Up @@ -276,6 +277,10 @@ func (a *App) OK(data any, opts ...output.ResponseOption) error {
func (a *App) Err(err error) error {
// Determine if we should include stats
var opts []output.ErrorResponseOption
var carrier output.ErrorMetaProvider
if errors.As(err, &carrier) {
opts = append(opts, output.WithErrorMeta(carrier.ErrorMetadata()))
}
if a.shouldIncludeStatsInError() {
stats := a.Collector.Summary()
opts = append(opts, output.WithErrorStats(&stats))
Expand Down
Loading