@easycustomerfeedback/cli
v0.3.0
Published
Command-line interface for EasyCustomerFeedback — list, triage, and comment on feedback submissions from your terminal.
Downloads
176
Maintainers
Readme
@easycustomerfeedback/cli
ecf is the command-line interface for EasyCustomerFeedback. Triage feedback submissions, manage knowledge base articles, and leave internal comments from your terminal.
Install
npm install -g @easycustomerfeedback/cliOr run without installing:
npx @easycustomerfeedback/cli --helpRequires Node.js 18 or newer.
Getting started
In the EasyCustomerFeedback dashboard, open Integrations → Personal API tokens and create a token. Copy it — tokens are only shown once.
Log in:
ecf loginYou'll be prompted for the server URL (defaults to
https://easycustomerfeedback.com) and the token. Credentials are saved to~/.config/ecf/config.json.If you belong to multiple workspaces, pick a default:
ecf workspace list ecf workspace use <workspaceId>
Commands
Authentication
| Command | What it does |
| ----------- | ------------------------------------------------------------------------------------ |
| ecf login | Configure server URL and API token. Auto-selects the workspace if you only have one. |
Workspaces
| Command | What it does |
| ------------------------ | --------------------------------------------------------- |
| ecf workspace list | Show the workspaces you belong to (marks the active one). |
| ecf workspace use <id> | Set the default workspace for future commands. |
Submissions
| Command | What it does |
| ------------------------------------------ | --------------------------------------------------- |
| ecf submissions list [options] | List submissions in the active workspace. |
| ecf submissions get <id> [--json] | Show details for a submission. |
| ecf submissions status <id> <status> | Update a submission's status. |
| ecf submissions comment <id> [body] | Add an internal comment (body may come from stdin). |
| ecf submissions tags add <id> <tagId> | Add a tag to a submission. |
| ecf submissions tags remove <id> <tagId> | Remove a tag from a submission. |
ecf submissions list options:
--status <s>— filter by status (repeatable:untriaged,open,in_progress,resolved,closed)--type <t>— filter by type (bug,feature_request,general_feedback)--project <id>— filter by project--tag <id>— filter by tag id (repeatable); passuntaggedfor submissions without tags--limit <n>— 1..200 (default 50)--workspace <id>— override the active workspace--json— output raw JSON
Valid status values for ecf submissions status: untriaged, open, in_progress, resolved, closed.
Tags
Tags are scoped to the active workspace. Use --workspace <id> to override it for list or create.
| Command | What it does |
| ------------------------------------------- | ------------------------------------- |
| ecf tags list [--workspace <id>] [--json] | List tags and their submission count. |
| ecf tags create <name> [--workspace <id>] | Create a tag. |
| ecf tags delete <tagId> | Delete a tag and its assignments. |
Knowledge base
Manage articles and categories scoped to a project. Pass the project's slug as the first positional argument.
Categories
| Command | What it does |
| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| ecf kb categories list <projectSlug> [--json] | List categories in the project. |
| ecf kb categories create <projectSlug> --name <n> [--description <d>] | Create a category. |
| ecf kb categories update <projectSlug> <categoryId> [--name <n>] [--description <d> \| --no-description] | Rename a category or change its description. |
| ecf kb categories delete <projectSlug> <categoryId> | Delete a category. |
Articles
| Command | What it does |
| ------------------------------------------------------------ | ---------------------------------------------------------------- |
| ecf kb articles list <projectSlug> [options] | List articles (optionally filter by status/category). |
| ecf kb articles get <projectSlug> <articleId> [--json] | Show an article (title, metadata, plain-text body). |
| ecf kb articles create <projectSlug> --title <t> [options] | Create a draft article. |
| ecf kb articles update <projectSlug> <articleId> [options] | Update an article. Unspecified fields keep their current values. |
| ecf kb articles publish <projectSlug> <articleId> | Publish (or republish) the article. |
| ecf kb articles unpublish <projectSlug> <articleId> | Move the article back to draft. |
| ecf kb articles archive <projectSlug> <articleId> | Archive the article. |
| ecf kb articles delete <projectSlug> <articleId> | Delete the article. |
ecf kb articles list options:
--status <s>— filter by status (draft,published,archived)--category <id>— filter by category id--json— output raw JSON
ecf kb articles create / update options:
--title <t>— required forcreate; optional forupdate--summary <s>— short blurb shown in lists and SEO meta--category <id>— assign to a category (use--no-categoryonupdateto detach)--visibility public|internal— defaults topublic--body-md <path|->— read a Markdown file (or-for stdin) and convert to TipTap JSON--body-json <path|->— read a TipTap JSON document directly (file path or-for stdin)
Pass either --body-md or --body-json, not both. The Markdown importer supports headings, paragraphs, bullet/ordered lists, blockquotes, fenced code blocks, horizontal rules, hard breaks, and inline marks (**bold**, *italic*, `code`, ~~strike~~, [link](url)).
Examples
List open bugs, piped to your pager:
ecf submissions list --status open --type bug | lessPipe a longer comment in from a file:
cat review.md | ecf submissions comment sub_abc123Resolve a submission:
ecf submissions status sub_abc123 resolvedCreate and apply a tag:
ecf tags create "Needs follow-up"
ecf submissions tags add sub_abc123 tag_abc123
ecf submissions list --tag tag_abc123Draft a knowledge base article from a Markdown file and publish it:
ecf kb articles create my-project \
--title "Resetting your password" \
--summary "Step-by-step instructions for password resets." \
--body-md ./docs/password-reset.md
# → Created kba_abc123 (resetting-your-password)
ecf kb articles publish my-project kba_abc123Pipe Markdown straight from your editor:
pbpaste | ecf kb articles update my-project kba_abc123 --body-md -Configuration
Configuration lives at ~/.config/ecf/config.json and is created by ecf login. Delete the file to reset.
API reference
The CLI is a thin wrapper around the public REST API. See the API docs for everything the CLI exposes and more.
