Integrate Canny to collect, manage, and prioritize feature requests directly from your users.
Install
mkdir -p .claude/skills/canny && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14676" && unzip -o skill.zip -d .claude/skills/canny && rm skill.zipInstalls to .claude/skills/canny
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Collect and manage product feedback with Canny. Use when a user asks to set up a feature request board, prioritize product feedback, build a public roadmap, or let users vote on features.Key capabilities
- →Identify logged-in users for Canny
- →Embed a feedback widget in a web application
- →Create a post (feature request) programmatically
- →Retrieve top voted posts from Canny
- →Segment feedback by custom fields
How it works
The skill provides code patterns to identify users, embed a feedback widget, and manage feedback programmatically via the Canny API. It uses a JavaScript SDK for user identification and a REST API for post management.
Inputs & outputs
When to use canny
- →Set up a feature request board
- →Build a public product roadmap
- →Prioritize user feedback
About this skill
Canny
Overview
Canny collects, organizes, and prioritizes product feedback. Users submit feature requests, vote on ideas, and follow updates. Teams build public roadmaps and close the loop when features ship.
Instructions
Step 1: Identify Users
// components/CannySdk.tsx — Identify logged-in users
'use client'
import { useEffect } from 'react'
export function CannyIdentify({ user }) {
useEffect(() => {
if (window.Canny && user) {
window.Canny('identify', {
appID: process.env.NEXT_PUBLIC_CANNY_APP_ID,
user: {
id: user.id,
email: user.email,
name: user.name,
avatarURL: user.avatar,
created: new Date(user.createdAt).toISOString(),
customFields: { plan: user.plan, mrr: user.mrr },
},
})
}
}, [user])
return null
}
Step 2: Embed Feedback Widget
// Embed the feedback widget in your app
function FeedbackButton() {
return (
<button
data-canny-link
data-board-token="your-board-token"
className="fixed bottom-4 right-4 bg-blue-600 text-white px-4 py-2 rounded-full"
>
💡 Feedback
</button>
)
}
Step 3: API Integration
// lib/canny.ts — Programmatic feedback management
const CANNY_API_KEY = process.env.CANNY_API_KEY!
// Create a post (feature request) programmatically
await fetch('https://canny.io/api/v1/posts/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apiKey: CANNY_API_KEY,
authorID: userId,
boardID: 'board-id',
title: 'Dark mode support',
details: 'Would love a dark theme option for the dashboard.',
}),
})
// Retrieve top voted posts
const response = await fetch('https://canny.io/api/v1/posts/list', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apiKey: CANNY_API_KEY,
boardID: 'board-id',
sort: 'score',
limit: 20,
}),
})
Guidelines
- Free tier: 1 board, basic features. Growth ($79/mo): unlimited boards, roadmap, integrations.
- Use custom fields to segment feedback by plan (show which features paying customers want).
- Public changelog closes the loop — users see when their requested features ship.
- For free alternative, consider using GitHub Discussions or a simple upvote board.
When not to use it
- →When a free alternative like GitHub Discussions is preferred
- →When the user does not want to integrate a third-party feedback tool
- →When the user does not have an existing web application
Prerequisites
Limitations
- →Free tier is limited to 1 board and basic features
- →Requires manual integration of code snippets into an existing web application
- →Relies on Canny's API and SDK for functionality
How it compares
This skill automates the integration of a dedicated feedback management system into an application, offering structured collection and prioritization features beyond basic communication channels.
Compared to similar skills
canny side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| canny (this skill) | 0 | — | Review | Intermediate |
| payload | 73 | 2mo | Review | Intermediate |
| backend-dev-guidelines | 10 | 29d | Review | Advanced |
| ai-sdk | 11 | 2mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by eliferjunior
View all by eliferjunior →You might also like
payload
payloadcms
Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.
backend-dev-guidelines
langfuse
Comprehensive backend development guide for Langfuse's Next.js 14/tRPC/Express/TypeScript monorepo. Use when creating tRPC routers, public API endpoints, BullMQ queue processors, services, or working with tRPC procedures, Next.js API routes, Prisma database access, ClickHouse analytics queries, Redis queues, OpenTelemetry instrumentation, Zod v4 validation, env.mjs configuration, tenant isolation patterns, or async patterns. Covers layered architecture (tRPC procedures → services, queue processors → services), dual database system (PostgreSQL + ClickHouse), projectId filtering for multi-tenant isolation, traceException error handling, observability patterns, and testing strategies (Jest for web, vitest for worker).
ai-sdk
vercel
Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".
route-handlers
davepoon
This skill should be used when the user asks to "create an API route", "add an endpoint", "build a REST API", "handle POST requests", "create route handlers", "stream responses", or needs guidance on Next.js API development in the App Router.
saas-scaffolder
entrptaher
Generates complete, production-ready SaaS project boilerplate including authentication, database schemas, billing integration, API routes, and a working dashboard using Next.js 14+ App Router, TypeScript, Tailwind CSS, shadcn/ui, Drizzle ORM, and Stripe. Use when the user wants to create a new SaaS
add-api-endpoint
tahmidbintaslim
Add a new Next.js App Router API route with validation, safe errors, Supabase auth checks, docs and tests.