npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@easycustomerfeedback/cli

v0.3.0

Published

Command-line interface for EasyCustomerFeedback — list, triage, and comment on feedback submissions from your terminal.

Downloads

176

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/cli

Or run without installing:

npx @easycustomerfeedback/cli --help

Requires Node.js 18 or newer.

Getting started

  1. In the EasyCustomerFeedback dashboard, open Integrations → Personal API tokens and create a token. Copy it — tokens are only shown once.

  2. Log in:

    ecf login

    You'll be prompted for the server URL (defaults to https://easycustomerfeedback.com) and the token. Credentials are saved to ~/.config/ecf/config.json.

  3. 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); pass untagged for 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 for create; optional for update
  • --summary <s> — short blurb shown in lists and SEO meta
  • --category <id> — assign to a category (use --no-category on update to detach)
  • --visibility public|internal — defaults to public
  • --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 | less

Pipe a longer comment in from a file:

cat review.md | ecf submissions comment sub_abc123

Resolve a submission:

ecf submissions status sub_abc123 resolved

Create and apply a tag:

ecf tags create "Needs follow-up"
ecf submissions tags add sub_abc123 tag_abc123
ecf submissions list --tag tag_abc123

Draft 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_abc123

Pipe 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.

License

MIT