feat(skills): 内置技能 - 补齐总纲引用的方法卡与第三方许可声明,升级影策短剧工作流

内置技能包补齐 SKILL.md 名录中引用的 cards/*.md 方法卡,并为改编自开源项目的包附上 THIRD-PARTY-LICENSES.md。影策短剧制作工作流升级到 1.1.0,新增输入分流、故事圣经、状态机与镜头连续性硬门禁。新增测试拦截总纲引用了但包内缺失的方法卡。
This commit is contained in:
ddcat666 committed 2026-09-30 03:42:02 +08:00
1 parent 64a3273c50
commit 5d0d07dbe5
736 files changed
+81142 -15

No files matched your search

@@ -2,6 +2,7 @@ package skills
import (
"path/filepath"
"regexp"
"testing"
"infinite-canvas/backend/internal/model"
@@ -11,6 +12,24 @@ import (
"gorm.io/gorm"
)
// 总纲名录里写死的 `cards/…` 路径会被 Agent 直接交给 skill_read_file;
// 包里缺卡时只会在运行时报「读取参考资料失败」,所以在这里提前拦住。
func TestBuiltinPackagesShipReferencedCards(t *testing.T) {
packages, err := loadBuiltinSkillPackages(nil)
if err != nil {
t.Fatal(err)
}
// 只认具体文件名;`cards/<slug>.md` 这类占位写法不算引用。
reference := regexp.MustCompile("`(cards/[^`<>\\s]+\\.md)`")
for _, item := range packages {
for _, match := range reference.FindAllStringSubmatch(string(item.archive.Files["SKILL.md"]), -1) {
if _, ok := item.archive.Files[match[1]]; !ok {
t.Errorf("builtin skill %s (%s) references missing %s", item.skill.ID, item.skill.Name, match[1])
}
}
}
}
func TestBuiltinMarkdownPackagesPreserveHistoryAndUserState(t *testing.T) {
db, err := gorm.Open(sqlite.Open(filepath.Join(t.TempDir(), "skills.db")), &gorm.Config{})
if err != nil {