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

@hugo-hsi-dev/pi-interactive-questionnaire

v0.1.0

Published

Pi extension for asking users structured questions with choices and a custom answer path.

Downloads

77

Readme

Interactive Questionnaire

Interactive Questionnaire is a pi Extension Package that registers the agent-facing ask_user tool for structured user feedback. It lets agents ask 1–5 questions, each with 2–5 predefined Choices plus an always-available Custom Answer row labeled Something else….

The package supports cancellation, compact transcript rendering, and /ask-user-demo, a human-facing command that launches a sample questionnaire and writes the formatted JSON result into the editor for inspection or copying.

Install

Install the published npm package:

pi install npm:@hugo-hsi-dev/pi-interactive-questionnaire

Install from a local checkout for development:

pnpm install
pnpm build
pi install ./extensions/interactive-questionnaire

Demo command

Run this in pi:

/ask-user-demo

Answer the sample questionnaire, try the Custom Answer row, or press Escape to cancel. The command writes the result JSON into the editor instead of adding it to the session transcript.

Tool

Registered tool: ask_user

Input always uses a questions array, even for one question:

{
  "questions": [
    {
      "id": "direction",
      "label": "Direction",
      "prompt": "Which implementation direction should we take?",
      "choices": [
        { "value": "minimal", "label": "Minimal skeleton" },
        { "value": "complete", "label": "Full v1 UI", "description": "Include demo and docs." }
      ]
    }
  ]
}

Result examples

Predefined Choice result:

{
  "answers": [
    {
      "id": "direction",
      "value": "minimal",
      "label": "Minimal skeleton",
      "wasCustom": false,
      "index": 1
    }
  ],
  "canceled": false
}

Custom Answer result:

{
  "answers": [
    {
      "id": "direction",
      "value": "Use the smallest useful slice, but keep tests readable.",
      "label": "Use the smallest useful slice, but keep tests readable.",
      "wasCustom": true
    }
  ],
  "canceled": false
}

Canceled result:

{
  "answers": [],
  "canceled": true,
  "reason": "user_canceled"
}

When no interactive UI is available, reason is ui_unavailable. Agents should not assume an answer from any canceled result.

Keyboard controls

  • Up/Down move through answer rows and clamp at the first and last row.
  • Number keys pick visible rows, including Something else….
  • Enter selects a predefined Choice or submits non-empty Custom Answer text.
  • Shift+Enter inserts a newline in Custom Answer input.
  • Escape cancels at the top level; inside Custom Answer input it returns to the Choice list.