🐛 fix(tsl-syntax-reference): keep skill self-contained

This commit is contained in:
csh
2026-08-20 16:03:00 +08:00
parent 77ab8211b1
commit 59e40a85a2
2 changed files with 45 additions and 29 deletions
+29 -5
View File
@@ -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")