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-feedbackkitimport { 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-coreAfter 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 signalsWhen 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.
