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

d2d-feedbackkit

v0.1.10

Published

SolidJS feedback widget, source locator, and integration helpers.

Downloads

156

Readme

d2d-feedbackkit

Public SolidJS feedback widget package.

bun add d2d-feedbackkit
import { createFeedbackLocator, createHostedFeedbackSubmit } from "d2d-feedbackkit";
import { mountFeedbackLocatorElement } from "d2d-feedbackkit/web-component";
import feedbackKitBabelPlugin from "d2d-feedbackkit/vite-plugin";

Hosted FeedbackKit submit

Use the hosted submit helper as the default integration path. The widget shows one primary action, Verstuur feedback, closes after a successful submit, and lets FeedbackKit create Linear issues and agent jobs from app config.

import { createFeedbackLocator, createHostedFeedbackSubmit } from "d2d-feedbackkit";

const locator = createFeedbackLocator({
  appKey: "morgo",
  appName: "Morgo",
  submitFeedback: createHostedFeedbackSubmit({
    apiUrl: "https://feedbackkit.d2d.cloud",
    apiKey: import.meta.env.VITE_FEEDBACKKIT_SUBMIT_KEY,
  }),
});

Solid host with your own button

import { createSignal } from "solid-js";
import { createFeedbackLocator, createHostedFeedbackSubmit } from "d2d-feedbackkit";
import { FeedbackLocatorRoot } from "d2d-feedbackkit/widget";
import "d2d-feedbackkit/styles.css";

const locator = createFeedbackLocator({
  appKey: "morgo-app",
  appName: "Morgo App",
  showFloatingButton: false,
  submitFeedback: createHostedFeedbackSubmit({
    apiUrl: "https://feedbackkit.d2d.cloud",
    apiKey: import.meta.env.VITE_FEEDBACKKIT_SUBMIT_KEY,
  }),
});

export function FeedbackButton() {
  const [open, setOpen] = createSignal(false);

  return (
    <>
      <button type="button" onClick={() => setOpen(true)}>
        Feedback
      </button>
      <FeedbackLocatorRoot
        locator={locator}
        open={open()}
        onOpenChange={setOpen}
        onSubmitted={() => toast.success("Feedback verstuurd")}
      />
    </>
  );
}

Web component host

import { createFeedbackLocator, createHostedFeedbackSubmit } from "d2d-feedbackkit";
import { defineFeedbackLocatorElement } from "d2d-feedbackkit/web-component";

defineFeedbackLocatorElement({ shadowRoot: true });

const locator = createFeedbackLocator({
  appKey: "host-app",
  appName: "Host App",
  showFloatingButton: false,
  enableVideoRecording: false,
  theme: {
    primary: "45 96% 53%",
    primaryForeground: "30 70% 8%",
    ring: "45 96% 53%",
  },
  submitFeedback: createHostedFeedbackSubmit({
    apiUrl: "https://feedbackkit.d2d.cloud",
    apiKey: window.FEEDBACKKIT_SUBMIT_KEY,
  }),
});

const widget = document.querySelector("d2d-feedbackkit");
widget.locator = locator;
widget.showFloatingButton = false;

document.querySelector("#feedback-button").addEventListener("click", () => {
  widget.open = true;
});

widget.addEventListener("feedbackkit-submitted", () => {
  showToast("Feedback verstuurd");
});

Without the open property the widget remains backwards compatible and shows its own floating feedback button by default.

Agent Skills (TanStack Intent)

This package ships versioned Agent Skills in skills/. They travel with every npm release — agents load the skill that matches the installed package version instead of relying on model training cutoffs.

Discover from node_modules

bunx @tanstack/intent@latest list
bunx @tanstack/intent@latest load d2d-feedbackkit#feedbackkit-core

After bun add d2d-feedbackkit, skills resolve from node_modules/d2d-feedbackkit/skills/.

Skill registry

| Skill | Load | | --- | --- | | Core locator API | d2d-feedbackkit#feedbackkit-core | | Hosted submit | d2d-feedbackkit#feedbackkit-core/hosted-submit | | Source locator / Vite plugin | d2d-feedbackkit#feedbackkit-core/source-locator | | Solid widget | d2d-feedbackkit#solid-widget | | Web component | d2d-feedbackkit#web-component | | Agent session prompts | d2d-feedbackkit#agent-session | | Linear formatting | d2d-feedbackkit#linear-integration |

The tanstack-intent keyword marks this package on the Intent registry.

Maintainer workflow

cd packages/feedbackkit
bun run skills:validate   # structural checks + source references
bun run skills:stale      # version drift + doc change signals

When bumping the package version, update library_version in every SKILL.md and skills/_artifacts/skill_tree.yaml. CI runs check-skills.yml on PRs that touch skills/** and opens a review PR after releases when documentation drifts.

Versioned updates

Skills are pinned to the package version via frontmatter (library_version: "0.1.5"). intent stale compares that version and tracked source paths (RockITFuel/feedbackkit:...) against the current tree so maintainers know when to regenerate skills after API or doc changes.