Skip to content
Merged
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
4 changes: 2 additions & 2 deletions skills/cli-conventions/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const file = alsoKnownAs(

apiRoutes(
alsoKnownAs(file.command('delete <file-id>').description('...'), 'rm'),
'DELETE /files/{id}',
'DELETE /v1/files/{id}',
)
```

Expand Down Expand Up @@ -98,7 +98,7 @@ Other rules:
One line, imperative verb first, no trailing period.

- **Say what the caller gets, not which endpoint answers.** `List your stored
files, newest first` — not `List files (GET /files)`.
files, newest first` — not `List files (GET /v1/files)`.
- **Routes go in the long help**, last, via `apiRoutes(cmd, 'GET /...')`.
When a command also has an `addHelpText('after', ...)` usage note, chain the
note *inside* the `apiRoutes()` call so the route line still lands last.
Expand Down
2 changes: 1 addition & 1 deletion skills/ellipsis/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fee. There are no seats.
- **Catching bugs before merge**: turn code review on and every pull request is
reviewed, or commit a pipeline file to scope and customize it.
- **Delegation from scripts or CI**: `agent session start` or
`POST /sessions`. With `--watch` it streams into the log and exits nonzero
`POST /v1/sessions`. With `--watch` it streams into the log and exits nonzero
unless the session completes, so it works as a gate.

Things teams actually build: screenshot every pull request that touches the
Expand Down
6 changes: 3 additions & 3 deletions src/commands/analytics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function registerAnalytics(program: Command): void {
.description('Rank who reviews the most PRs, people and apps alike'),
'reviewers',
),
'GET /analytics/metrics',
'GET /v1/analytics/metrics',
)
.option(
'-r, --repo <owner/name>',
Expand Down Expand Up @@ -148,7 +148,7 @@ export function registerAnalytics(program: Command): void {
.description('Show pull request volume and trend, split human vs bot'),
'prs',
),
'GET /analytics/pull-requests',
'GET /v1/analytics/pull-requests',
)
.option(
'--account-type <type>',
Expand Down Expand Up @@ -211,7 +211,7 @@ export function registerAnalytics(program: Command): void {
.description('Show review totals, verdicts, and the top reviewers'),
'reviews',
),
'GET /analytics/reviews',
'GET /v1/analytics/reviews',
)
.option(
'-r, --repo <name>',
Expand Down
24 changes: 12 additions & 12 deletions src/commands/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function registerConfig(program: Command): void {
config.command('list').description('List your saved agent configs'),
'ls',
),
'GET /agents/configs',
'GET /v1/agents/configs',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down Expand Up @@ -61,7 +61,7 @@ export function registerConfig(program: Command): void {
config
.command('get <config-id>')
.description('Print one agent config as YAML, or as JSON with --json'),
'GET /agents/configs/{id}',
'GET /v1/agents/configs/{id}',
)
.option('--json', 'output raw JSON')
.action(async (configId: string, opts: { json?: boolean }) => {
Expand Down Expand Up @@ -92,7 +92,7 @@ export function registerConfig(program: Command): void {
config
.command('create')
.description('Create an agent, live immediately or by pull request with --repo'),
'POST /agents/configs',
'POST /v1/agents/configs',
)
.option(
'-r, --repo <name>',
Expand Down Expand Up @@ -151,7 +151,7 @@ export function registerConfig(program: Command): void {
.description("Replace an API-managed agent's definition from a file, live immediately"),
'update',
),
'PUT /agents/configs/{id}',
'PUT /v1/agents/configs/{id}',
)
.requiredOption('-f, --file <path>', 'agent config file (.yaml/.yml or .json) to replace it with')
.option('--json', 'output raw JSON')
Expand All @@ -175,7 +175,7 @@ export function registerConfig(program: Command): void {
.description('Delete an API-managed agent; it stops running and frees its name'),
'rm',
),
'DELETE /agents/configs/{id}',
'DELETE /v1/agents/configs/{id}',
)
.option('--json', 'output raw JSON')
.action(async (configId: string, opts: { json?: boolean }) => {
Expand All @@ -194,7 +194,7 @@ export function registerConfig(program: Command): void {
config
.command('link <config-id>')
.description('Move an agent into a repository by opening a pull request that adds its file'),
'POST /agents/configs/{id}/link',
'POST /v1/agents/configs/{id}/link',
)
.requiredOption('-r, --repo <name>', 'repository in your account to move the agent into')
.option(
Expand Down Expand Up @@ -224,7 +224,7 @@ export function registerConfig(program: Command): void {
config
.command('unlink <config-id>')
.description('Take an agent over from its file, so this API changes it instead'),
'POST /agents/configs/{id}/unlink',
'POST /v1/agents/configs/{id}/unlink',
)
.option('--json', 'output raw JSON')
.action(async (configId: string, opts: { json?: boolean }) => {
Expand Down Expand Up @@ -254,7 +254,7 @@ export function registerConfig(program: Command): void {
.description('Show or set which agent config runs when a session names none'),
'defaults',
),
'GET /agents/defaults',
'GET /v1/agents/defaults',
)
.option('--json', 'output raw JSON')
// Bare `agent config default`: the effective default for the repo you're
Expand Down Expand Up @@ -290,7 +290,7 @@ export function registerConfig(program: Command): void {
.description('List every default that is set, account rung and per-repo rungs'),
'ls',
),
'GET /agents/defaults',
'GET /v1/agents/defaults',
)
.option('--json', 'output raw JSON')
// The group also defines --json (for the bare view), and commander parses
Expand Down Expand Up @@ -328,7 +328,7 @@ export function registerConfig(program: Command): void {
defaults
.command('set <config-id>')
.description('Set the account default agent config, or a repo default with --repo'),
'PUT /agents/defaults',
'PUT /v1/agents/defaults',
)
.option(
'-r, --repo [repository]',
Expand Down Expand Up @@ -362,7 +362,7 @@ export function registerConfig(program: Command): void {
'rm',
'delete',
),
'DELETE /agents/defaults',
'DELETE /v1/agents/defaults',
)
.option(
'-r, --repo [repository]',
Expand All @@ -384,7 +384,7 @@ export function registerConfig(program: Command): void {
.description(
`Scaffold a starter agent config YAML locally (default: ${DEFAULT_CONFIG_PATH})`,
),
'POST /agents/configs with --template',
'POST /v1/agents/configs with --template',
)
// No `-f` short: CLI-wide, `-f` means an input file (see `config create`).
.option('--force', 'overwrite the file if it already exists')
Expand Down
2 changes: 1 addition & 1 deletion src/commands/connect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export function registerConnect(session: Command): void {
headless or from inside the session's own sandbox, where the id is optional.
Pass --no-input to follow read-only from a script or agent (no TTY needed).

API: GET /sessions/{id}, GET /sessions/{id}/records, POST /sessions/{id}/messages, WS /sessions/{id}/stream`,
API: GET /v1/sessions/{id}, GET /v1/sessions/{id}/records, POST /v1/sessions/{id}/messages, WS /v1/sessions/{id}/stream`,
)
.action(async (sessionId: string | undefined, opts: { records: boolean; input: boolean }) => {
await runAction(async () => {
Expand Down
8 changes: 4 additions & 4 deletions src/commands/file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export function registerFile(program: Command): void {
file
.command('upload <path>')
.description('Upload a PNG and print its org-gated URL, ready to paste into a PR comment'),
'POST /files',
'POST /v1/files',
)
.option('--json', 'output raw JSON')
.action(async (path: string, opts: { json?: boolean }) => {
Expand All @@ -104,7 +104,7 @@ export function registerFile(program: Command): void {

apiRoutes(
alsoKnownAs(file.command('list').description('List your stored files, newest first'), 'ls'),
'GET /files',
'GET /v1/files',
)
.option('--session <id>', 'only files uploaded by this agent session')
.option('-l, --limit <n>', 'max results (server cap: 250)', parsePositiveInt)
Expand Down Expand Up @@ -139,7 +139,7 @@ export function registerFile(program: Command): void {
file
.command('get <file-id>')
.description("Print one file's metadata, or download its bytes with -o"),
'GET /files/{id}',
'GET /v1/files/{id}',
'presigned S3 GET',
)
.option('-o, --output <path>', 'write the file contents to this path')
Expand All @@ -165,7 +165,7 @@ export function registerFile(program: Command): void {
file.command('delete <file-id>').description('Delete a file, so its link stops resolving'),
'rm',
),
'DELETE /files/{id}',
'DELETE /v1/files/{id}',
)
.option('--json', 'output raw JSON')
.action(async (fileId: string, opts: { json?: boolean }) => {
Expand Down
4 changes: 2 additions & 2 deletions src/commands/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function registerGithub(program: Command): void {
.description('List the repositories the GitHub installation can reach'),
'repo',
),
'GET /integrations/github/repos',
'GET /v1/integrations/github/repos',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down Expand Up @@ -53,7 +53,7 @@ export function registerGithub(program: Command): void {
),
'member',
),
'GET /integrations/github/members',
'GET /v1/integrations/github/members',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/help.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export function registerHelp(program: Command): void {
program
.command('help')
.description('Show help for a command, or ask the help agent with --interactive'),
'POST /sessions with --interactive',
'POST /v1/sessions with --interactive',
)
.argument('[command...]', 'command to show help for (e.g. `session start`)')
.option(
Expand Down
2 changes: 1 addition & 1 deletion src/commands/integrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export function registerIntegration(program: Command): void {
.description('Show which integrations are connected, in one table'),
'integrations',
),
'GET /integrations',
'GET /v1/integrations',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/linear.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export function registerLinear(program: Command): void {
.description('List the Linear teams, marking which have Ellipsis enabled'),
'team',
),
'GET /integrations/linear/teams',
'GET /v1/integrations/linear/teams',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/me.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function renderMe(me: WhoAmI): void {
export function registerMe(program: Command): void {
apiRoutes(
program.command('me').description('Show the identity behind the current credential'),
'GET /me',
'GET /v1/me',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function registerModel(program: Command): void {
),
'ls',
),
'GET /models',
'GET /v1/models',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/ping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export function registerPing(program: Command): void {
program
.command('ping')
.description('Check that the API is reachable and the credential is valid'),
'GET /me',
'GET /v1/me',
)
.action(async () => {
// There's no unauthenticated health route on the public API, so we probe
Expand Down
10 changes: 5 additions & 5 deletions src/commands/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ export function registerReview(program: Command): void {
review
.command('start <pull-request>', { isDefault: true })
.description('Review a pull request by number'),
'POST /reviews',
'WS /sessions/{id}/stream',
'GET /reviews/{id}',
'POST /v1/reviews',
'WS /v1/sessions/{id}/stream',
'GET /v1/reviews/{id}',
)
.option('--repo <owner/name>', 'repository to review (default: this git remote)')
.option('--full', 're-review the whole pull request, not just the new commits')
Expand Down Expand Up @@ -111,7 +111,7 @@ export function registerReview(program: Command): void {
review
.command('get <review-id>')
.description("Print a review's findings, scope, and whether it posted"),
'GET /reviews/{id}',
'GET /v1/reviews/{id}',
)
.option('--json', 'output raw JSON')
.action(async (reviewId: string, opts: { json?: boolean }) => {
Expand All @@ -127,7 +127,7 @@ export function registerReview(program: Command): void {
review.command('list').description("List a pull request's reviews, newest first"),
'ls',
),
'GET /reviews',
'GET /v1/reviews',
)
.option('--repo <owner/name>', 'only reviews of this repository')
.option('--pr <number>', 'only reviews of this pull request', parsePositiveInt)
Expand Down
2 changes: 1 addition & 1 deletion src/commands/sentry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function registerSentry(program: Command): void {
'org',
'organizations',
),
'GET /integrations/sentry/organizations',
'GET /v1/integrations/sentry/organizations',
)
.option('--json', 'output raw JSON')
.action(async (opts: { json?: boolean }) => {
Expand Down
Loading