fix(knowledge): frame the video title and URL in the video-digest resume prompt as untrusted data
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 62/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript
Hướng nghiên cứu
Bắt đầu từ buildContinuationPrompt trong plugins/knowledge/skills/video-digest/extraction/watch/watch-state.js, nơi title và sourceUrl được nội suy quanh dòng 326 và 330, rồi kiểm tra các trường trạng thái ở dòng 46-47. Đọc docs/conventions/untrusted-content/README.md để tái sử dụng khung bao bọc. Hoàn thành khi title và URL nằm trong một khối dữ liệu có phân định, các ký tự xuống dòng được gộp lại và dấu backtick được vô hiệu hóa, tiêu đề không còn chứa tiêu đề thô, và một bài kiểm tra mới cho thấy tiêu đề có dòng mệnh lệnh và khối mã chỉ xuất hiện bên trong khối đó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
buildContinuationPrompt in watch-state.js interpolates the video title and source URL straight into the resume prompt. Both come from the video's own metadata, which the video's publisher controls. The prompt is the text a fresh session reads as its instructions, and it is written into the slice, so a title carrying imperative text lands in the instruction channel with no data framing.
Failure scenario
Expected: ingested metadata is presented as data, never instructions, per the framing contract in docs/conventions/untrusted-content/README.md (classification, finding, authority floor).
Actual: the first line is # Continue /knowledge:video-digest watch — ${state.title} and a later line is Source: ${state.sourceUrl}, unquoted and unframed. A title such as one containing a sentence addressed to the agent reads, to the resuming session, as part of its own prompt. #6820 framed the ingested transcripts, comments and pages; this prompt is a separate ingest path that the fix did not cover.
Evidence
- Title in the prompt heading: https://github.com/melodic-software/claude-code-plugins/blob/7787be41e98e30cd6e3b82e99494886d77e30895/plugins/knowledge/skills/video-digest/extraction/watch/watch-state.js#L326
- Source URL in the prompt: https://github.com/melodic-software/claude-code-plugins/blob/7787be41e98e30cd6e3b82e99494886d77e30895/plugins/knowledge/skills/video-digest/extraction/watch/watch-state.js#L330
- The state fields the prompt reads (
sourceUrl,title): https://github.com/melodic-software/claude-code-plugins/blob/7787be41e98e30cd6e3b82e99494886d77e30895/plugins/knowledge/skills/video-digest/extraction/watch/watch-state.js#L46-L47 - Framing contract: https://github.com/melodic-software/claude-code-plugins/blob/7787be41e98e30cd6e3b82e99494886d77e30895/docs/conventions/untrusted-content/README.md
watch-state.jshas no untrusted-content wording on main (searched for "untrusted").
Suggested fix
Carry the inline framing spine from the untrusted-content convention in the prompt, move the title and URL into a clearly delimited data block (for example a fenced block, with newlines in the title collapsed and backticks neutralized), and keep the heading free of the raw title. Add a test that a title containing an imperative line and a code fence does not appear outside the data block.
Related
- #6820 (framed ingested transcripts, comments and pages)
- docs/conventions/untrusted-content/README.md
🤖 Generated with Claude Code
- Ngôn ngữ chính
- Shell
- Star
- 22
- Fork
- 2
- Merge trung bình
- 6 giờ 10 phút
- Pull request đã merge (30 ngày)
- 937
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của melodic-software/claude-code-plugins
-
docs(evals): note CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS for headless eval runs that use workflowsĐang mởgood first issue needs-triage priority: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
melodic-software/claude-code-plugins#7022 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue needs-triage priority: low
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
melodic-software/claude-code-plugins#7019 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(ci): check-changed-skills.sh fails a stale branch on skills only main changedCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởgood first issue needs-triage priority: medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
melodic-software/claude-code-plugins#7014 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(knowledge): list-promotion-candidates prints a stack trace on a malformed claim inventoryĐang mởgood first issue needs-triage priority: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
melodic-software/claude-code-plugins#6982 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-human needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
melodic-software/claude-code-plugins#6897 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của melodic-software/claude-code-plugins
Issue tương tự
-
type: bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
blamechris/chroxy#8579 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug raised-by:reviewer
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
medici-finance/assay#2677 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
alunduil/alunduil-chezmoi#895 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Sub-second duration displays incorrectly for commands taking < 100ms (e.g. 50ms renders as 0.50s)Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 91/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày