add README guidance to skill workflow
This commit is contained in:
@@ -28,6 +28,13 @@ class CreateWorkflowTests(unittest.TestCase):
|
||||
"---\n\n# Skill 名称\n\n## 步骤\n\n1. 第一步\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
template.joinpath("README.md").write_text(
|
||||
"# skill-name\n\n"
|
||||
"用一句话告诉使用者这个 skill 能解决什么问题。\n\n"
|
||||
"给出用户可以直接说出的典型请求。\n\n"
|
||||
"给出一条可以直接交给 Agent 的示例请求。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
project_skill = self.skills_home / "skills" / "skiff"
|
||||
project_skill.mkdir()
|
||||
project_skill.joinpath("SKILL.md").write_text(
|
||||
@@ -36,6 +43,10 @@ class CreateWorkflowTests(unittest.TestCase):
|
||||
"---\n\n# skiff\n\n## 步骤\n\n1. 维护 skill。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
project_skill.joinpath("README.md").write_text(
|
||||
"# skiff\n\n供人类使用的 skiff 说明。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
def tearDown(self) -> None:
|
||||
self.temp_dir.cleanup()
|
||||
@@ -109,6 +120,10 @@ class CreateWorkflowTests(unittest.TestCase):
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
draft = self.skills_home / ".drafts" / "migration-review"
|
||||
self.assertTrue((draft / "SKILL.md").is_file())
|
||||
self.assertEqual(
|
||||
(draft / "README.md").read_text(encoding="utf-8").splitlines()[0],
|
||||
"# migration-review",
|
||||
)
|
||||
brief = (draft / "brief.yaml").read_text(encoding="utf-8")
|
||||
self.assertIn("idea: 检查数据库迁移", brief)
|
||||
self.assertIn(f"source_project: {project.resolve()}", brief)
|
||||
@@ -134,12 +149,19 @@ class CreateWorkflowTests(unittest.TestCase):
|
||||
"---\n\n# 数据库迁移检查\n\n## 步骤\n\n1. 检查迁移与回滚路径。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
draft.joinpath("README.md").write_text(
|
||||
"# migration-review\n\n"
|
||||
"用于检查数据库迁移安全性。\n\n"
|
||||
"## 使用示例\n\n请检查这次数据库迁移。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
result = self.run_skiff("finalize", "migration-review")
|
||||
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
final = self.skills_home / "skills" / "migration-review"
|
||||
self.assertTrue((final / "SKILL.md").is_file())
|
||||
self.assertTrue((final / "README.md").is_file())
|
||||
self.assertFalse((final / "brief.yaml").exists())
|
||||
self.assertFalse(draft.exists())
|
||||
|
||||
@@ -152,12 +174,31 @@ class CreateWorkflowTests(unittest.TestCase):
|
||||
"---\n\n# 参考检查\n\n读取 [规范](references/rules.md)。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
draft.joinpath("README.md").write_text(
|
||||
"# reference-check\n\n用于检查本地参考资料。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
result = self.run_skiff("check", "reference-check")
|
||||
|
||||
self.assertNotEqual(result.returncode, 0)
|
||||
self.assertIn("引用文件不存在", result.stderr)
|
||||
|
||||
def test_check_rejects_missing_readme(self) -> None:
|
||||
draft = self.skills_home / ".drafts" / "missing-readme"
|
||||
draft.mkdir(parents=True)
|
||||
draft.joinpath("SKILL.md").write_text(
|
||||
"---\nname: missing-readme\ndescription: >-\n"
|
||||
" 检查 skill 是否包含人类使用说明。用于维护 skill 结构时。\n"
|
||||
"---\n\n# README 检查\n\n1. 检查 README。\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
result = self.run_skiff("check", "missing-readme")
|
||||
|
||||
self.assertNotEqual(result.returncode, 0)
|
||||
self.assertIn("缺少 README.md", result.stderr)
|
||||
|
||||
def test_finalize_does_not_overwrite_existing_owned_skill(self) -> None:
|
||||
created = self.run_skiff("create", "collision-check", "--idea", "检查名称冲突")
|
||||
self.assertEqual(created.returncode, 0, created.stderr)
|
||||
|
||||
Reference in New Issue
Block a user