All skills
jtydhr88 avatar

/lw-workflow

@91bb089

Entry point and router for the lyric writing library (作词工作流与路由). The two workflows that fork at the very first question - music-first versus lyrics-first - and their different stage tables, which skill to load for which task, the full-library boundary table, the LYR-SPEC gate rules, the bidirectional interface with the arrangement library, and the three testing devices. Load this FIRST for any lyric writing request, before deciding which other skill to read. Use when starting a lyric, when fitting words to an existing melody or a melody to existing words, when unsure which skill owns a question, when a draft fails lint, or when handing work to another library. 作词、歌词、填词、工作流、路由、该读哪个 skill、LYR-SPEC、先曲后词、先词后曲。

Use this Skill: https://skilld.dev/gh/jtydhr88/lyric-writing-skills/lw-workflow

This session only. Nothing lands on disk.

LYR-SPEC.schema.md

≈3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

LYR-SPEC v1.0 —《词稿规格单》规范

本库唯一的交接物。一物四用:对外交接、AB 测试对象、编译源(→Suno/YuE2)、验收基准。 与库一的 ARR-SPEC 双向耦合(这是本库的结构特点,库一对下游是单向的)。

配套:LYR-SPEC.template.yaml、example-*.yaml。写完按 §2 十条自查;中文按 lw-tone-check §2.3 手判倒字。


0. 使用纪律

  1. ★ intent 五项不填齐,不许写第一句词。 这是本库唯一的硬门禁。
  2. 写完逐条过十条自查(§2),不过的条目改掉或写明理由再交。这些是判据不是铁律。
  3. 中文词按 lw-tone-check §2.3 手判倒字,并人工念一遍高风险处。
  4. ★ 先词后曲时,旋律回来之后必须重跑倒字/协音检查——这一步最常被漏。
  5. 交稿前过 lw-ai-tell-audit 的八条。

1. 字段规范

1.1 meta

字段 必填 说明
spec_version ✅ "1.0"
title ✅
language ✅ 普通话 / 粤语 / 英文 / 日文 / 韩文。★ 决定读哪个 L2 skill
flow ✅ 先曲后词 / 先词后曲。★ 本库的第一个岔路口,两条路的阶段表完全不同
style_layer ○ L3 skill id,如 lw-chinese-style;无则 none
arr_spec ○ 配套 ARR-SPEC 的路径。★ 有的话,§1.3 的六个字段必须一致

1.2 intent —— 动笔前必填(★ 门禁)

字段 必填 说明
plot_type ✅ ★ 先答。这首歌是哪一类,封闭集合:attitudinal 态度型 / situational 情境型 / narrative 叙事型 / expository 说理型。默认不是 narrative,大多数流行歌是前两类。它定人称、声音与重复预算,见 lw-song-intent §1.1–1.3
one_thing ✅ 这首歌只说一件事。一句话,不许两句,不许"既…又…"。★ 念出来要像一句人话,不是主题词
to_whom ✅ 对谁说。★ "抒情"和"听众"不是对象——要一个能想象出脸的对象
at_what_moment ✅ 在哪个时刻说。★ 时间点,不是时间段
anchor_object ✅ 一个贯穿全曲的、能拍照的物件。★ 判据:说得出它的颜色、大小、新旧
anchor_phrase ○ 锚也可以是一句话:态度型/说理型常常没有物件,贯穿全曲的是一句直接对「你」说的话(请求、决定、质问、宣言),副歌反复它。填了它,态度型/说理型的 anchor_object 可以写「无」。语料:国语态度型四成没有贯穿物件,这一组破题句 41% 是独白、口语占 82%

为什么设门禁:AI 写的词不是"用词不好",是没有人做过选择—— 它写出来的四段可以属于任何一首歌。这四项就是强迫做选择的地方。 详见 lw-song-intent。

1.3 prosody —— 词与旋律的咬合

先曲后词时来自 ARR-SPEC;先词后曲时由本表输出、反向约束 ARR-SPEC。

★ syllables 的填法:词写完之后,对着 lyrics[].lines 逐行数汉字再填,不要先定字数再凑词。只数汉字,标点与整行括号的 ad-lib 不算。这一项是历次测试里最稳定的差一个字的地方,所以顺序要反过来:先有词,后有数。

prosody:
  sections:
    - id: C1                      # ★ 必须与 ARR-SPEC.form[].id 一一对应
      syllables: [9, 9, 7, 11]    # 每句音节/字数。★ 一个元素 = 词稿里的一行
      stress_positions:           # 英文:重音位置;中文:旋律强拍落在第几字
      peak_syllable:              # ★ 全段最高音落在哪个字——这个字必须经得起唱
      melody_contour: "5→3 下行"
      notes: [67, 69, 67, 64]     # ○ MIDI 音高序列,给 倒字判定 用

★ 与库一必须一致的六个字段: form[].id / form[].bars / form[].name / meta.tempo / meta.key / vocal.persona 任何一边改了,另一边必须同步。

1.4 rhyme

字段 必填 说明
scheme ✅ 韵式,如 AABA
che ✅ 辙口(普通话十三辙 / 粤语韵部)。写成列表;推荐逐段写,每项 {section, 辙, 宽窄, 韵脚},也接受只写辙名的字符串列表。受第 8 条自查约束:不许全曲只用一两个宽辙
deliberate_breaks ✅ ★ 哪几处故意不押——全押到底是 AI 味。空数组视为未填
surprise_notes ○ 哪个韵脚是"意外又觉得对"的。受 lint 第 9 条约束

1.5 imagery

字段 必填 说明
concrete_nouns ✅ ★ 能拍照的具体物件清单。受 lint 第 2 条约束
system ✅ ★ 这些物件构成什么系统——不是随机堆意象。空着意味着它们只是装饰
forbidden ✅ 本首禁用的抽象词(时光/远方/梦/自由/青春/思念…)。受 lint 第 2 条约束:零出现

1.6 narrative

字段 必填 说明
pov ✅ 人称与视角。受 lint 第 6 条约束
tense_anchor ✅ 时间锚点。★ 由 intent.at_what_moment 决定
withholding ✅ ★ 该说的地方不说的那一处在哪。受 lint 第 5 条约束。AI 会把情绪走完整,真人经常停在难受里

1.7 asymmetry —— ★ 专门一节:刻意的不对称

字段 说明
short_line 哪一行故意短
unrhymed 哪一段故意不押
chorus_variation 末遍副歌改了哪一到三个字,落在热点位。★ 前两遍逐字相同是常态,不是缺陷
repetition_budget ★ 副歌重复几遍、主歌靠什么推进(新事件 / 再看一眼 / 拉远镜头)。副歌占全曲三到六成(人工分段 72 首中位 0.44),先定副歌几行几遍再算主歌剩几行;主歌之间也要有复用。不同行占比超过 0.85 先怀疑这一项没花。见 lw-structure §6.0

受 lint 第 3、4、10 条约束:三项至少填两项;各段字数不许完全相同;副歌各遍文本不许完全相同。

★ 每一处不对称都要说得出理由。 为了破坏而破坏,和整齐一样机械。

1.8 lyrics —— 词本身

lyrics:
  - section: C1
    lines:
      - "第一行"
      - "第二行"

★ 分行不是排版,是指令——后端会把换行当成乐句边界读。 分行必须与 prosody.sections[].syllables 一致。详见 lw-suno-interface §3。

★ section 必须等于 ARR-SPEC form[].id(C1、A2 这种 id,不是 Chorus 这种名字)。两张规格单靠这一列咬合:编曲侧的 MusicXML 领奏谱、ChordPro 和 ABC 的 w: 行都从这里取词,按 form[].id 找到该段的小节,再按"每个音符一个音节"逐字贴上去,中文一字一音节。Suno 的段落标签由 ARR-SPEC 的 form[].name 派生,这里不重复存。

★★ 词里不许有任何注释/创作说明——后端会把它唱出来。注释写 note 字段。

1.9 render

render:
  suno: {format_notes: ""}      # 段落标签由 ARR-SPEC form[].name 派生,不在这里手填
  yue:  {}

★ 段落标签序列由库一的 mc-render-compile 统一编译;这里只放词这一侧的格式说明。

1.10 checks

checks:
  computed: {}      # 倒字率、协音违例、韵脚意外度…(脚本填)
  self_audit: []    # 人工逐条打勾
  exemptions: []    # ★ 豁免必须写理由,不许静默跳过

人工项固定这几条:

  • one_thing 念出来是一句人话,不是主题词
  • anchor_object 说得出颜色、大小、新旧
  • 去掉标题和专名,别人能说出这首歌讲的是哪一件具体的事
  • 每一处不对称说得出理由
  • 中文:倒字高风险处实际唱/念过,确认无误

2. LYR-LINT 十条

人工逐条过;仓库内部有同名脚本做同样的检查,不随包发布。不过 = 改或写理由,不是禁止交付。

# 检查 对抗的 AI 味 可算
1 intent 五项非空,anchor_object 是能拍照的实物,或态度型/说理型用 anchor_phrase 代替 没做过选择 半
2 每段至少 N 个具体名词;forbidden 抽象词零出现 名词全是抽象的 ✅
3 各段字数不许完全相同 结构对称到死 ✅
4 asymmetry 三项至少填两项 同上 ✅
5 narrative.withholding 非空 什么都解决了 半
6 pov + tense_anchor 非空 没有视角和时间 ✅
7 倒字率 ≤ 阈值(普通话)/协音违例 = 0(粤语) 倒字不管 ✅
8 辙口不许全曲只用一两个宽辙 只挑最顺的辙 ✅
9 韵脚意外度:不许全是最高频韵字 押韵选第一个想到的 ✅
10 副歌各遍文本不许完全相同 原样重复三遍 ✅

2.1 ⚠ 哪些条能判过/不过

第 2、7、8、9 条只报数,不判过/不过:

条 状态
1、3、4、5、6、10 ✅ 可判过/不过(结构性检查,不需要阈值)
2 ⚠ forbidden 零出现可判;"每段至少 N 个具体名词"的 N 待定
7 ⚠ 只能给数值(详见 lw-tone-check §5)
8、9 ⚠ 只能给数值,需要辙口表与韵脚词频表

3. 与 ARR-SPEC 的双向接口

先曲后词:ARR-SPEC.form + 旋律符割り  ──→  LYR-SPEC 的 prosody 约束
先词后曲:LYR-SPEC 的字数句式         ──→  反向约束 ARR-SPEC.form[].bars
方向 传什么
ARR → LYR form[].id/name/bars、energy_curve(情绪弧)、每句音节数、重音位置、最高音落在哪个字
LYR → ARR 各段字数句式 → 反推 form[].bars;★ 字调轮廓 → 旋律的约束(避免先词后曲时事后发现倒字)

★ 共享字段(改一边必须同步另一边): form[].id / form[].bars / form[].name / meta.tempo / meta.key / vocal.persona

★ 与导出格式的接口:

去向 从 LYR-SPEC 取什么 怎么落
MusicXML 领奏谱 lyrics[].lines、meta 里的词作者 每个音符一个 lyric,syllabic=single;creator lyricist
ChordPro lyrics[].lines 歌词行,和弦来自 ARR-SPEC harmony_letters
ABC(YuE2) lyrics[].lines w: 行,字数与该行音符数相等
LRC 等时间戳歌词 不从这里出 生成后由音频或 MIDI 的时间推
倒字校验 lyrics[].lines + prosody ★ 输入是旋律的实际音高(ABC 或 MusicXML)加歌词文本;只有文字描述的轮廓时按 lw-tone-check §2.3 手判,有谱时按谱判

intent、imagery、narrative、rhyme、asymmetry 是仅意图的块,行业里没有格式存它们,导出时整块作为文本随文件走。


4. 为什么是这些字段

直接对着「AI 直接写的词为什么一耳朵能听出来」清单来的:

AI 味症状 对抗项 可算
名词全是抽象的 imagery.concrete_nouns + forbidden ✅
结构对称到死 asymmetry 三项 ✅
什么都解决了 narrative.withholding ⚠
没有视角和时间 narrative.pov + tense_anchor ⚠
倒字不管 prosody + 检测器 ✅ 完全可算
辙口只挑最顺的 rhyme.che ✅
押韵选第一个想到的 rhyme.surprise_notes ✅
副歌三遍全同且末遍没有一处改动 asymmetry.chorus_variation ✅

★ 八条里六条可算。 比库一(十四条里九条)的比例更硬,因为文本不需要检测。

Source: SKILL.md on GitHub

No alerts13d3 checks · Risk SAFE
  • Gen Agent Trust Hub13d

    The skill is a comprehensive framework for lyric writing that uses structured templates (LYR-SPEC) and rules to guide AI behavior. It contains no executable code, network activity, or security risks.

  • Socket13d

    No alerts

  • Snyk13d

    Risk: LOW · No issues

Signed by skilld at 91bb089. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated 2 weeks ago

README badge

README badge for jtydhr88/lyric-writing-skills/lw-workflow