Adds the data layer for per-item agent prompts. Markdown frontmatter gets an `agent_prompt:` block scalar that survives the importer round-trip (newlines preserved), and `resolveWorkflowPrompt()` walks task → epic → plan → built-in default returning both the resolved string and the source level. Walk is slug-based, not parent_id-based, because the importer leaves parent_id briefly null mid-transaction. tRPC `backlog.getWorkflowPrompt` returns ownOverride + effectivePrompt so future UI can render the override box + preview without two queries. `backlog.updateWorkflowPrompt` is owner/admin-gated (prompts change downstream Cursor/Claude behavior) and audit-logged on every write. UI deferred — apps/web doesn't have a backlog-item detail panel yet; the existing object-detail panel is for the objects table. Follow-up filed at Task-workflow-prompt-task-detail-ui.md. Co-authored-by: Cursor <cursoragent@cursor.com>
1.2 KiB
1.2 KiB
| kind | slug | title | plan_slug | epic_slug | status | priority | tenant_id | owner | cursor_todo_id | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|
| task | <task-slug> | <Task title> | <plan-slug> | <epic-slug> | ready | P2 | <tenant-uuid-or-placeholder> | <name-or-unassigned> | null | <ISO-8601> |
Task summary
One or two sentences.
Description
Implementation notes, context links, and technical constraints.
Subtasks
- …
- …
Owner or assignee
<owner>
Status
<draft | ready | in_progress | blocked | done | cancelled>
Estimation
<e.g. S / M / L or hours>
Acceptance criteria
- …
Links to related Epic / Plan
- Epic:
./Epic-<epic-slug>.md(same directory as this task) - Plan:
../Plan-<plan-slug>.md(parent ofEpic-<epic-slug>/; matchesplans/Plan-<plan-slug>/Plan-<plan-slug>.md)