feat: add first-party skills, ponytail lock, and full lint suite
Some checks failed
🧪 Test / 🧪 Lock + lint (push) Has been cancelled

- add ponytail skill set to skills-lock.json (14 locked skills total)
- add first-party medusa skill under skills/, layered on install
- make test now runs ruff, shellcheck, and markdownlint-cli2
- CI installs the lint tools before make test in both workflows
- MIT license, funding buttons, thanks and donation sections in README
- .markdownlint-cli2.jsonc config; ignore lint caches in .gitignore
This commit is contained in:
2026-07-10 12:54:47 +02:00
parent 16c8b7f4af
commit 077643098b
11 changed files with 237 additions and 16 deletions

View File

@@ -50,6 +50,26 @@ class TestSkillsLock(unittest.TestCase):
f"skills must be sorted ascending; expected {sorted(names)}",
)
def test_first_party_skills_have_valid_frontmatter(self):
for skill_md in sorted((REPO_ROOT / "skills").glob("*/SKILL.md")):
with self.subTest(skill=skill_md.parent.name):
text = skill_md.read_text(encoding="utf-8")
self.assertTrue(text.startswith("---\n"), "missing frontmatter")
frontmatter = text.split("---", 2)[1]
self.assertIn("name:", frontmatter, "frontmatter missing name")
self.assertIn(
"description:", frontmatter, "frontmatter missing description"
)
def test_first_party_skills_do_not_shadow_locked_skills(self):
locked = set(self.lock["skills"].keys())
for skill_dir in sorted((REPO_ROOT / "skills").glob("*/")):
self.assertNotIn(
skill_dir.name.rstrip("/"),
locked,
f"first-party skill '{skill_dir.name}' collides with a locked skill",
)
if __name__ == "__main__":
unittest.main()