feat: add functionality to copy task details as Claude Code prompt

This commit is contained in:
null 2026-05-24 16:48:20 -05:00
parent b782511ee9
commit 0605c7b908
1 changed files with 37 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import {
RefreshCcw, RefreshCcw,
Settings, Settings,
ShieldCheck, ShieldCheck,
Terminal,
X, X,
} from "lucide-react"; } from "lucide-react";
@ -2545,6 +2546,33 @@ export default function BoardDetailPage() {
}; };
}, [commentIdFromUrl, comments, isDetailOpen]); }, [commentIdFromUrl, comments, isDetailOpen]);
const handleDispatchToClaudeCode = useCallback(async () => {
if (!selectedTask) return;
const boardName = board?.name ?? "Unknown board";
const parts: string[] = [
`You have been assigned a task from Pipeline.\n`,
`**Task**: ${selectedTask.title}`,
`**Board**: ${boardName}`,
`**Status**: ${selectedTask.status}`,
`**Priority**: ${selectedTask.priority}`,
];
if (selectedTask.due_at) {
parts.push(`**Due**: ${new Date(selectedTask.due_at).toLocaleDateString()}`);
}
if (selectedTask.description?.trim()) {
parts.push(`\n**Description**:\n${selectedTask.description.trim()}`);
}
parts.push(`\n---\nPlease review this task and begin working on it.`);
parts.push(`Task ID: ${selectedTask.id}`);
const prompt = parts.join("\n");
try {
await navigator.clipboard.writeText(prompt);
pushToast("Task copied — paste into Claude Code in VSCode to dispatch.", "success");
} catch {
pushToast("Failed to copy to clipboard.", "error");
}
}, [selectedTask, board, pushToast]);
const closeComments = () => { const closeComments = () => {
openedTaskIdFromUrlRef.current = null; openedTaskIdFromUrlRef.current = null;
if (searchParams.get("taskId") || searchParams.get("commentId")) { if (searchParams.get("taskId") || searchParams.get("commentId")) {
@ -3710,6 +3738,15 @@ export default function BoardDetailPage() {
</p> </p>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<button
type="button"
onClick={handleDispatchToClaudeCode}
className="rounded-lg border border-border p-2 text-muted-foreground transition hover:bg-muted disabled:opacity-40"
disabled={!selectedTask}
title="Copy task as Claude Code prompt"
>
<Terminal className="h-4 w-4" />
</button>
<button <button
type="button" type="button"
onClick={() => setIsEditDialogOpen(true)} onClick={() => setIsEditDialogOpen(true)}