get_cli_feedback
Retrieve CLI feedback items from Codecks project management, with optional filtering by category to identify bugs, improvements, or missing features.
Instructions
Read saved CLI feedback items. Optionally filter by category. No auth needed.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Implementation Reference
- src/tools/feedback.ts:98-139 (handler)The get_cli_feedback tool handler implementation - reads saved CLI feedback from .cli_feedback.json file, optionally filters by category, and returns the results using finalizeToolResultasync (args) => { try { if (!existsSync(FEEDBACK_PATH)) { return { content: [ { type: "text", text: JSON.stringify(finalizeToolResult({ found: false, items: [], count: 0 })), }, ], }; } const data = JSON.parse(readFileSync(FEEDBACK_PATH, "utf-8")); let items: Record<string, unknown>[] = data?.items ?? []; if (args.category) { items = items.filter((i) => i.category === args.category); } return { content: [ { type: "text", text: JSON.stringify( finalizeToolResult({ found: items.length > 0, items, count: items.length, }), ), }, ], }; } catch (err) { return { content: [ { type: "text", text: JSON.stringify(finalizeToolResult(handleError(err))), }, ], }; } },
- src/tools/feedback.ts:87-96 (registration)Tool registration for get_cli_feedback with title, description, and input schema (optional category filter)server.registerTool( "get_cli_feedback", { title: "Get CLI Feedback", description: "Read saved CLI feedback items. Optionally filter by category. No auth needed.", inputSchema: z.object({ category: z .enum(["missing_feature", "bug", "error", "improvement", "usability"]) .optional(), }),
- src/tools/feedback.ts:13-19 (helper)Helper constants and error handling function used by the feedback toolsconst FEEDBACK_PATH = resolve(process.cwd(), ".cli_feedback.json"); const MAX_ITEMS = 200; function handleError(err: unknown): Record<string, unknown> { if (err instanceof CliError) return contractError(String(err), "error"); return contractError(`Unexpected error: ${err}`, "error"); }