🐛 fix(tsl-syntax-reference): keep skill self-contained
This commit is contained in:
@@ -556,7 +556,7 @@ class TslSyntaxReferenceTests(unittest.TestCase):
|
||||
self.assertNotIn("<!-- section-id:", output)
|
||||
self.assertNotIn("<!-- quickstart-rule:", output)
|
||||
|
||||
def test_skill_contract_uses_extracted_queries_and_deliverable_api_checks(self):
|
||||
def test_skill_contract_uses_extracted_queries_and_scope_checks(self):
|
||||
skill = SKILL_PATH.read_text(encoding="utf-8")
|
||||
help_result = run_lookup("--help")
|
||||
self.assertEqual(0, help_result.returncode, help_result.stderr)
|
||||
@@ -567,10 +567,10 @@ class TslSyntaxReferenceTests(unittest.TestCase):
|
||||
self.assertIn("从用户原话提取", help_text)
|
||||
self.assertIn("保留原写法但不传完整用户句", help_text)
|
||||
self.assertIn("不传完整用户句", help_text)
|
||||
self.assertIn("面向用户交付的 TSL/TSF 代码", skill)
|
||||
self.assertIn("每个 builtin/API", skill)
|
||||
self.assertIn("代码交付只要依赖这些未验证事实", skill)
|
||||
self.assertIn("不声称签名、行为、可用性或输出", skill)
|
||||
self.assertIn("纯语法说明", skill)
|
||||
self.assertIn("不得声称该占位调用的 API 行为或输出", skill)
|
||||
self.assertIn("按「缺口时停止」处理", skill)
|
||||
|
||||
def test_help_owns_cli_details_and_skill_defers_to_it(self):
|
||||
skill = SKILL_PATH.read_text(encoding="utf-8")
|
||||
@@ -590,7 +590,31 @@ class TslSyntaxReferenceTests(unittest.TestCase):
|
||||
self.assertIn("构造任一命令前先运行", skill)
|
||||
self.assertIn("scripts/lookup.py --help", skill)
|
||||
self.assertIn("不用于查询 API 签名", skill)
|
||||
self.assertIn("不用于选择解释器或运行方式", skill)
|
||||
self.assertIn("不用于判断解释器、平台或运行方式", skill)
|
||||
|
||||
def test_skill_is_self_contained_and_does_not_reference_host_rules(self):
|
||||
skill = SKILL_PATH.read_text(encoding="utf-8")
|
||||
|
||||
for forbidden in (
|
||||
"AGENTS.md",
|
||||
"AGENT_RULES",
|
||||
".agents/",
|
||||
"CONTEXT.md",
|
||||
"memory-bank",
|
||||
"docs/",
|
||||
"tsl-api-reference",
|
||||
"data/README.md",
|
||||
"项目脚本",
|
||||
"项目文档",
|
||||
"CI",
|
||||
):
|
||||
with self.subTest(forbidden=forbidden):
|
||||
self.assertNotIn(forbidden, skill)
|
||||
self.assertNotRegex(skill, r"\[[^\]]+\]\([^)]*\.md[^)]*\)")
|
||||
self.assertEqual(
|
||||
{"SKILL.md"},
|
||||
set(re.findall(r"[A-Za-z0-9_./-]+\.md", skill)),
|
||||
)
|
||||
|
||||
def test_ci_runs_syntax_structure_and_format_gates(self):
|
||||
workflow = CI_PATH.read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user