feat(docs): add market four-tab materials (tutorial/demo/changelog) for v1.0.46
All checks were successful
技能自动化发布 / release (push) Successful in 13s
All checks were successful
技能自动化发布 / release (push) Successful in 13s
This commit is contained in:
@@ -141,6 +141,47 @@ class TestDocsStandards(unittest.TestCase):
|
||||
msg="SKILL.md must state README.md is user-facing documentation",
|
||||
)
|
||||
|
||||
def test_market_tab_docs_exist(self) -> None:
|
||||
root = get_skill_root()
|
||||
for name in ("README.md", "TUTORIAL.md", "DEMO.md", "CHANGELOG.md"):
|
||||
path = os.path.join(root, name)
|
||||
self.assertTrue(os.path.isfile(path), msg=f"{name} must exist at skill root")
|
||||
|
||||
def test_demo_md_frontmatter_has_demo_video_url(self) -> None:
|
||||
text = self._read("DEMO.md")
|
||||
self.assertTrue(text.startswith("---"), "DEMO.md must start with YAML frontmatter")
|
||||
frontmatter = self._parse_frontmatter(text)
|
||||
self.assertIn(
|
||||
"demo_video_url:",
|
||||
frontmatter,
|
||||
"DEMO.md frontmatter must include demo_video_url",
|
||||
)
|
||||
|
||||
def test_changelog_has_section_for_skill_version(self) -> None:
|
||||
skill_fm = self._parse_frontmatter(self._read("SKILL.md"))
|
||||
match = re.search(r"(?m)^version:\s*[\"']?([0-9]+\.[0-9]+\.[0-9]+)", skill_fm)
|
||||
self.assertIsNotNone(match, "SKILL.md must declare semver version")
|
||||
version = match.group(1)
|
||||
changelog = self._read("CHANGELOG.md")
|
||||
self.assertRegex(
|
||||
changelog,
|
||||
rf"(?m)^##\s*\[?v?{re.escape(version)}\]?",
|
||||
msg=f"CHANGELOG.md must include a ## section for version {version}",
|
||||
)
|
||||
|
||||
def test_skill_md_documents_market_four_tabs(self) -> None:
|
||||
text = self._read("SKILL.md")
|
||||
for name in ("TUTORIAL.md", "DEMO.md", "CHANGELOG.md", "readme_md", "tutorial_md"):
|
||||
self.assertIn(name, text, msg=f"SKILL.md must document market material {name}")
|
||||
|
||||
def test_development_md_documents_market_four_tabs(self) -> None:
|
||||
text = self._read("development/DEVELOPMENT.md")
|
||||
self.assertIn("TUTORIAL.md", text)
|
||||
self.assertIn("DEMO.md", text)
|
||||
self.assertIn("CHANGELOG.md", text)
|
||||
self.assertIn("demo_video_url", text)
|
||||
self.assertIn("tutorial_md", text)
|
||||
|
||||
def test_naming_md_exists_and_covers_standards(self) -> None:
|
||||
text = self._read("development/NAMING.md")
|
||||
self.assertIn("verb-noun-platform", text)
|
||||
|
||||
Reference in New Issue
Block a user