taste

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Taste

偏好(Taste)

Paths:
${CLAUDE_SKILL_DIR}
means the folder containing this SKILL.md, and
${CLAUDE_PLUGIN_ROOT}
the plugin folder two levels above it.
Every question to the user goes in the question box: call the AskUserQuestion tool (2-4 options, the recommended one first). Only in an agent without that tool, ask numbered questions in text.
The user's own rules, kept outside the plugin (plugin updates never touch them):
~/.ai-video-editor/taste.md     rules in plain words, one bullet each, by section
~/.ai-video-editor/taste.json   settings the scripts read; they win over the creator's style.json
<library>/custom/               their own rule files, caption styles and template defaults (custom.py)
Never write a correction into the plugin's own files (a SKILL.md, a reference, a script): an update replaces them. Everything the user teaches goes in the files above.
S="${CLAUDE_SKILL_DIR}/scripts"
. Stdlib only, any
python3
(
py
on Windows).
路径:
${CLAUDE_SKILL_DIR}
表示包含此 SKILL.md 的文件夹,
${CLAUDE_PLUGIN_ROOT}
表示其上两级的 plugin 文件夹。
向用户提出的每个问题都要放入问题框:调用 AskUserQuestion 工具(提供 2-4 个选项,推荐项放在首位)。只有在没有该工具的 agent 中,才用文本形式提出编号问题。
用户自己的规则保存在 plugin 之外(plugin 更新绝不会影响它们):
~/.ai-video-editor/taste.md     rules in plain words, one bullet each, by section
~/.ai-video-editor/taste.json   settings the scripts read; they win over the creator's style.json
<library>/custom/               their own rule files, caption styles and template defaults (custom.py)
绝不要把修正写入 plugin 自身的文件(SKILL.md、reference、script),因为更新会替换这些文件。用户教给编辑器的所有内容都应写入上述文件。
S="${CLAUDE_SKILL_DIR}/scripts"
。仅使用标准库,适用于任何
python3
(Windows 上使用
py
)。

When the user reacts to an edit

用户对编辑作出反应时

  1. Find the behaviour behind what they said, not the one instance. "The 'router' card is too small" becomes "Cards fill the space they have", not "make the router card bigger".
  2. Scope. After every correction, ask in the question box: "Is this about this video, your style, or would it help everyone?" with the options
    My style (Recommended)
    ,
    Just this video
    and
    Would help everyone
    . When the edit used a creator's style (
    edits/<name>/style.json
    has a
    source
    ), add
    This style (<its name>)
    first, as the recommended one, by the name the home page shows ("50/50"), never its folder or
    @id
    . Skip the question only when they already said it ("always", "just this one").
    Would help everyone
    saves it to their style too, then step 6. Notes sent from the review page never get this question: only the ones the user ticked "Keep as a rule" become rules, saved without asking (style-edit
    references/review.md
    ).
  3. Save it with
    add
    , with the setting when one maps (table below) and the edit it was said on:
bash
python3 "$S/taste.py" add captions "Captions bigger" --set captions.size_pct=6 --edit edits/<name>
python3 "$S/taste.py" add sound "Whooshes quieter on this one" --video edits/<name>
python3 "$S/taste.py" add visuals "Logos stay smaller than the captions" --edit edits/<name>
python3 "$S/taste.py" add captions "Captions smaller" --set captions.size_pct=4.5 --style edits/<name> --edit edits/<name>
--style
(This style): the setting goes to that creator's
style.overrides.json
(style.json stays as measured; a re-study keeps it), which wins over taste.json on that style, and the rule to the "Learned from your feedback" section of its
edit-like-<handle>
skill.
My style
rules also update the
my-style
skill.
The same rule said again (same setting, or near-identical words, same scope) edits the old one instead of adding a copy. Every-video rules also land in taste.md (words) and taste.json (the setting); this-video rules stay in rules.json and reach only that edit.
they say
--set
cut is too slow / too rushed / too tight
cut.max_pause=
(default 0.15 s; slower 0.25, faster 0.12)
captions too small / too big
captions.size_pct=
(cap height, % of frame height)
more / fewer words on screen
captions.words_per_caption=
captions higher / lower
captions.y_pct=
caption colour / highlight colour
captions.color=
/
captions.highlight_color=
(
"#RRGGBB"
)
fewer / more zooms
zoom.per_min=
(0 turns zooms off)
no sound effects
sfx=false
always split / always overlay
layout.mode=split
or
overlay
keep my ums / don't cut fillers
cut.keep_fillers=true
(retakes.py proposes no filler cuts)
a whole caption look they want keptwrite
custom/captions/<name>.json
(a style.json captions block), then
captions.preset=<name>
No setting fits (card timing, a capture cropped wrong, a look), so it is a word rule: write it so it can be followed next time ("Captures crop to the sentence that proves the point").
  1. Tell the user in one line what was saved, so they can catch a wrong one:
    Saved to your taste: "Logos stay smaller than the captions" (visuals, every video)
    . If
    add
    prints
    regression
    , the rule was already applied and did not hold: say so, and make it more concrete (a setting, a number) instead of saving the same words again.
  2. Then redo the edit with it.
  3. On
    Would help everyone
    , write it as a rule for every user of the editor, never about this video: what was wrong, the general rule, the skill or check that should own it, and a small example without their media, names or links (the script scrubs paths, file names, emails, handles and links too):
bash
python3 "$S/taste.py" suggest "Zoom snapped in over 2 frames" "Zooms ease in over at least 0.5 s" --owner "style-edit quality.py zoom check" --example "a 1.2x punch at 0.07 s"
python3 "$S/taste.py" issue          # shows the issue it would open
If
gh auth status
succeeds, ask in the question box: "Send it to the editor's maintainers as a GitHub issue?" with
Yes, open an issue (Recommended)
/
No, keep it on my computer
. On yes:
python3 "$S/taste.py" issue --yes
, and give them the issue link. No gh, or no: it stays in
~/.ai-video-editor/suggestions.jsonl
, where the maintainers'
improve
skill reads it.
  1. 找出用户表述背后的行为模式,而不只是某一次的具体问题。“‘router’卡片太小”应转化为“卡片应填满可用空间”,而不是“把 router 卡片放大”。
  2. 确定适用范围。每次修正后,都要在问题框中询问:“这是关于这个视频、你的风格,还是对所有人都有帮助?”选项为
    我的风格(推荐)
    、
    仅这个视频
    和
    对所有人都有帮助
    。当此次编辑使用了某位创作者的风格(
    edits/<name>/style.json
    中含
    source
    )时,应首先添加
    此风格(<名称>)
    并将其作为推荐项;名称应使用首页显示的名称(“50/50”),绝不能使用文件夹名或
    @id
    。只有在用户已经说明范围时(“始终如此”“仅这个”)才可跳过问题。
    对所有人都有帮助
    还会先把规则保存到用户自己的风格中,然后执行第 6 步。从审阅页面发送的备注不会提出这个问题:只有用户勾选“保留为规则”的备注才会成为规则,并在不询问的情况下保存(style-edit
    references/review.md
    )。
  3. 使用
    add
    保存;如果规则可以映射到某个设置(见下表),则同时保存该设置以及用户提出该意见时所针对的编辑:
bash
python3 "$S/taste.py" add captions "Captions bigger" --set captions.size_pct=6 --edit edits/<name>
python3 "$S/taste.py" add sound "Whooshes quieter on this one" --video edits/<name>
python3 "$S/taste.py" add visuals "Logos stay smaller than the captions" --edit edits/<name>
python3 "$S/taste.py" add captions "Captions smaller" --set captions.size_pct=4.5 --style edits/<name> --edit edits/<name>
--style
(此风格):设置会写入该创作者的
style.overrides.json
(
style.json
保持为实测值;重新研究时也不会覆盖它),其优先级高于该风格下的
taste.json
;规则会写入其
edit-like-<handle>
skill 的“根据你的反馈学到的内容”部分。
我的风格
规则也会更新
my-style
skill。
再次说出同一条规则(相同设置、近似措辞且范围相同)时,应编辑原规则,而不是添加副本。适用于所有视频的规则还会同时写入
taste.md
(文字规则)和
taste.json
(设置);仅适用于当前视频的规则保存在
rules.json
中,并且只影响该次编辑。
用户表述
--set
剪辑太慢/太快/太紧凑
cut.max_pause=
(默认 0.15 s;更慢为 0.25,更快为 0.12)
字幕太小/太大
captions.size_pct=
(字幕高度上限,占画面高度的百分比)
屏幕上的字数更多/更少
captions.words_per_caption=
字幕位置更高/更低
captions.y_pct=
字幕颜色/高亮颜色
captions.color=
/
captions.highlight_color=
(
"#RRGGBB"
)
缩放更少/更多
zoom.per_min=
(0 表示关闭缩放)
不要音效
sfx=false
始终使用分屏/始终使用叠加
layout.mode=split
或
overlay
保留我的 ums/不要剪掉填充词
cut.keep_fillers=true
(retakes.py 不会建议剪掉填充词)
用户希望保留的一整套字幕外观写入
custom/captions/<name>.json
(一个 style.json captions 块),然后设置
captions.preset=<name>
如果没有适合的设置(卡片时机、截取画面裁剪错误、某种视觉风格),则将其保存为文字规则:措辞应确保下次能够照此执行,例如“截取画面应裁切到能够证明要点的句子”。
  1. 用一行告诉用户保存了什么,以便他们及时发现错误:
    已保存到你的偏好:“Logo 应比字幕更小”(视觉,所有视频)。
    如果
    add
    输出
    regression
    ,说明该规则之前已经应用过,但没有奏效:应如实告知用户,并将规则改得更具体(一个设置或数值),不要再次保存相同文字。
  2. 然后按照该规则重新完成编辑。
  3. 对于
    对所有人都有帮助
    ,将其写成供编辑器每位用户使用的规则,而不要写成仅与这个视频有关:指出问题是什么、通用规则是什么、应由哪个 skill 或检查负责,以及一个不含用户媒体、名称或链接的小示例(脚本还会清理路径、文件名、邮箱、账号和链接):
bash
python3 "$S/taste.py" suggest "Zoom snapped in over 2 frames" "Zooms ease in over at least 0.5 s" --owner "style-edit quality.py zoom check" --example "a 1.2x punch at 0.07 s"
python3 "$S/taste.py" issue          # shows the issue it would open
如果
gh auth status
成功,在问题框中询问:“要把它作为 GitHub issue 发送给编辑器的维护者吗?”选项为
是,开启 issue(推荐)
/
否,保存在我的电脑上
。选择“是”时,运行
python3 "$S/taste.py" issue --yes
,并向用户提供 issue 链接。如果 gh 不可用,或用户选择否,则将其保存在
~/.ai-video-editor/suggestions.jsonl
中,维护者的
improve
skill 会读取该文件。

Learn from a past edit

从过往编辑中学习

When the user already edits by hand (or says yes to setup's "Have a raw take and the version you posted? I can learn how you cut."), ask for both paths and read
references/learn-from-edit.md
. It runs
learn.py <raw> <posted>
, which saves their pause length, retake and filler habits as rules with counts, so the first edit already cuts like them.
当用户本来就在手动剪辑(或同意设置流程中的“你有原始素材和已发布的版本吗?我可以学习你的剪辑方式。”)时,询问两个路径并读取
references/learn-from-edit.md
。 该脚本会运行
learn.py <raw> <posted>
,将用户的暂停时长、重拍和填充词处理习惯保存为带计数的规则,从而让第一次编辑就采用其剪辑方式。

Is it learning

是否在学习

bash
python3 "$S/taste.py" report
Each rule with times applied, in how many edits, corrections, and the last edit where it was said again after it was applied. Rules from review-page notes (
review.py learn
) say so. On the final approve the review page offers the session's notes as rules to tick, saved into the edit's style (the skill-improver skill:
review.py learn --propose
/
--done
). Show it on "what have you learned", "are you learning", or after a regression.
bash
python3 "$S/taste.py" report
这里会列出每条规则的应用次数、涉及的编辑数量、修正次数,以及该规则应用后最后一次被再次提出的编辑。来自审阅页面备注的规则(
review.py learn
)也会注明这一点。 在最终批准时,审阅页面会提供本次会话的备注作为可勾选的规则,并保存到该次编辑的风格中(skill-improver skill:
review.py learn --propose
/
--done
)。 在用户询问“你学到了什么”“你在学习吗”,或发生回归后,向其展示结果。

Before any edit

开始任何编辑之前

Every cooked. skill starts by reading the taste for the edit it is on:
bash
python3 "$S/taste.py" show --edit edits/<name>
That also counts the word rules as applied to this edit. plan.py and build_timeline.py read the settings themselves (
load_json()
in the plugin's
lib/ai_editor/taste.py
) and count them.
Follow every rule in taste.md. They beat the creator's style: the user chose them. If a rule and the creator's style disagree, say so once and follow the rule.
每个 cooked. skill 都应先读取此次编辑对应的偏好:
bash
python3 "$S/taste.py" show --edit edits/<name>
这也会把文字规则计为已应用到此次编辑。plan.py 和 build_timeline.py 会直接读取这些设置(plugin 的
lib/ai_editor/taste.py
中的
load_json()
),并对其进行计数。
遵循 taste.md 中的每条规则。用户规则优先于创作者的风格,因为这些规则是用户自己选择的。如果某条规则与创作者的风格冲突,请说明一次,然后遵循该规则。

Show, change, forget

查看、更改和遗忘

  • "What do you know about my taste":
    taste.py show
    , then summarise it in a few lines.
  • Forget a rule:
    taste.py report
    for its number, then
    taste.py forget <id>
    (its setting and taste.md line go with it).
  • Reset everything: delete taste.md, taste.json and rules.json (ask first).
  • “你了解我的哪些偏好”:运行
    taste.py show
    ,然后用几行概括结果。
  • 遗忘某条规则:先运行
    taste.py report
    找到其编号,再运行
    taste.py forget <id>
    (对应设置和 taste.md 中的该行也会一并移除)。
  • 重置全部内容:删除 taste.md、taste.json 和 rules.json(先询问用户)。

Files

文件

  • scripts/learn.py
    : a raw take and the user's posted cut of it in, their cut settings out;
    demo
    .
  • ${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/custom.py
    :
    path
    ,
    rule "<rule>"
    (a rule file in custom/rules/, which
    show
    prints),
    list
    .
  • scripts/taste.py
    :
    add
    ,
    report
    ,
    show
    ,
    forget
    ,
    rule
    ,
    set
    ,
    unset
    ,
    get
    ,
    suggest
    ,
    issue
    ,
    demo
    . A thin CLI over the plugin's
    lib/ai_editor/taste.py
    , whose
    load_json()
    and
    merge()
    are what plan.py and the cut use to lay the taste over the defaults and style.json.
  • ~/.ai-video-editor/rules.json
    : every rule with its scope, corrections, times applied and regressions (shape in the lib's docstring).
  • scripts/learn.py
    :输入原始素材和用户发布的剪辑版本,输出其剪辑设置;
    demo
    。
  • ${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/custom.py
    :
    path
    、
    rule "<rule>"
    (
    custom/rules/
    中的规则文件,
    show
    会打印它)、
    list
    。
  • scripts/taste.py
    :
    add
    、
    report
    、
    show
    、
    forget
    、
    rule
    、
    set
    、
    unset
    、
    get
    、
    suggest
    、
    issue
    、
    demo
    。这是 plugin 的
    lib/ai_editor/taste.py
    上层的一层轻量 CLI;其中
    load_json()
    和
    merge()
    是
    plan.py
    和剪辑流程用于将偏好覆盖到默认值及
    style.json
    上的核心机制。
  • ~/.ai-video-editor/rules.json
    :每条规则及其适用范围、修正次数、应用次数和回归情况(结构见 lib 的 docstring)。