CLI client for goodissues.dev — manage projects and track bugs, incidents, and feature requests from the command line. Single static binary (~1MB), zero dependencies.
Subcommands
| Subcommand | Purpose |
|---|---|
install |
Install the goodissues CLI |
configure |
Set up API key and environment |
projects |
List, create, get, or delete projects |
issues |
List, create, get, or delete issues |
/goodissues help
Display a list of all available subcommands. Output the following exactly:
/goodissues subcommands:
install — Install the goodissues CLI configure — Set up API key and environment projects — Manage projects issues — Manage issues (bugs, incidents, feature requests) help — Show this help message
If `/goodissues` is invoked without a subcommand, show the help output above.
## Dispatch
1. Parse the subcommand and args from the user's invocation. Examples:
- `/goodissues install` → subcommand `install`
- `/goodissues configure` → subcommand `configure`
- `/goodissues projects list` → subcommand `projects`, action `list`
- `/goodissues issues create ...` → subcommand `issues`, action `create`
- `/goodissues help` → show help
2. If the subcommand is unknown, list available subcommands and stop.
3. Before running any subcommand except `install` and `help`, check if `goodissues` is installed (`which goodissues`). If not, tell the user to run `/goodissues install` first and stop.
4. Follow the matching workflow below.
---
## `/goodissues install`
Install the goodissues CLI binary.
1. Check if `goodissues` is already installed: `which goodissues`
2. If already installed, show the current version (`goodissues --version`) and ask if the user wants to reinstall.
3. Detect the platform:
- **macOS / Linux**:
```sh
curl -fsSL https://raw.githubusercontent.com/agoodway/goodissues_cli/main/install.sh | sh
```
- **Windows**: tell the user to run in PowerShell:
```powershell
irm https://raw.githubusercontent.com/agoodway/goodissues_cli/main/install.ps1 | iex
```
4. Verify installation: `goodissues --version`
5. Suggest running `/goodissues configure` to set up an API key.
---
## `/goodissues configure`
Set up or manage API key and environment configuration.
Config is stored at `~/.goodissues.json` (Windows: `%USERPROFILE%\.goodissues.json`).
### Workflow
1. **If the user provided flags**, pass them through directly:
```sh
goodissues configure --env <name> --url <url> --api-key <key>
-
If no flags provided, guide the user interactively:
- Ask for the base URL. Default:
https://goodissues.dev. For local development:http://localhost:4000. - Ask for the API key. Keys starting with
sk_are read-write (required for create/delete). Keys starting withpk_are read-only. - Optionally ask for an environment name (e.g.,
production,dev,staging). - Run:
goodissues configure --url <url> --api-key <key>(add--env <name>if specified)
- Ask for the base URL. Default:
-
Show current config:
goodissues configure show(keys are masked). -
Show specific environment:
goodissues configure show --env <name>.
Notes
- The first configured environment becomes the default.
- Re-running with the same
--envupdates existing values. - Use
--env <name>on any command to switch environments.
/goodissues projects
Manage projects within your account.
Actions
| Action | Command |
|---|---|
list |
List all projects (default) |
get |
Get a single project by ID |
create |
Create a new project |
delete |
Delete a project |
List
goodissues projects list
goodissues projects list --json
If no action is specified, default to list.
Get
goodissues projects get <project-id>
goodissues projects get <project-id> --json
Parse the project ID from the user's message. If not provided, run goodissues projects list first to show available projects, then ask which one.
Create
goodissues projects create --name <name> [--description <desc>]
Parse the project name from the user's message. Examples:
/goodissues projects create My App→goodissues projects create --name "My App"/goodissues projects create --name "Backend API" --description "REST API service"→ pass through
Delete
goodissues projects delete <project-id>
Always confirm with the user before deleting. Requires an sk_* key.
/goodissues issues
Track bugs, incidents, and feature requests.
Actions
| Action | Command |
|---|---|
list |
List issues (default) |
get |
Get a single issue by ID |
create |
Create a new issue |
delete |
Delete an issue |
List
goodissues issues list
goodissues issues list --project <project-id>
goodissues issues list --status <status>
goodissues issues list --project <project-id> --status <status>
goodissues issues list --json
If no action is specified, default to list.
Statuses: new, in_progress, archived
Get
goodissues issues get <issue-id>
goodissues issues get <issue-id> --json
Create
goodissues issues create --project <project-id> --title <title> --type <type> [options]
Required flags:
--project <id>— project to create the issue in--title <title>— issue title--type <type>— one of:bug,incident,feature_request
Optional flags:
--priority <priority>—low,medium(default),high,critical--description <desc>— detailed description
When parsing the user's natural language:
- "file a bug" / "bug report" →
--type bug - "feature request" / "new feature" →
--type feature_request - "incident" / "outage" →
--type incident - If no project is specified, run
goodissues projects listfirst to show available projects, then ask which one.
Examples:
/goodissues issues create Login broken on Safari in project abc123→goodissues issues create --project abc123 --title "Login broken on Safari" --type bug/goodissues issues create --project abc123 --title "Add dark mode" --type feature_request --priority medium→ pass through
Delete
goodissues issues delete <issue-id>
Always confirm with the user before deleting. Requires an sk_* key.
Global Options
All commands support these options:
| Flag | Description |
|---|---|
--env <name> |
Use a specific configured environment |
--json |
Output raw JSON response |
API Key Types
sk_*keys are read-write — required for create and delete operationspk_*keys are read-only — sufficient for listing and viewing
Get your API key at goodissues.dev.
Issue Reference
| Field | Values |
|---|---|
| Type | bug, incident, feature_request |
| Priority | low, medium (default), high, critical |
| Status | new (default), in_progress, archived |
Each issue belongs to a project and has a key (e.g., PROJ-1) with a sequential number.
$ARGUMENTS