✨ feat(skills): curate code workflow skills
Add a Gitea CI triage skill with legacy web-log fallback, document first-party and third-party skill roles, and register selected third-party code workflow sources. Remove the first-party bulk refactor workflow in favor of the registered codebase migration replacement.
This commit is contained in:
@@ -17,6 +17,8 @@ SKILLS_MD = ROOT / "SKILLS.md"
|
||||
SUPERPOWERS_LIST = ROOT / "skills" / "thirdparty" / ".sources" / "superpowers.list"
|
||||
UI_UX_PRO_MAX_LIST = ROOT / "skills" / "thirdparty" / ".sources" / "ui-ux-pro-max.list"
|
||||
UI_UX_PRO_MAX_DIR = ROOT / "skills" / "thirdparty" / "ui-ux-pro-max"
|
||||
BROOKS_LINT_LIST = ROOT / "skills" / "thirdparty" / ".sources" / "brooks-lint.list"
|
||||
CODEBASE_RECON_LIST = ROOT / "skills" / "thirdparty" / ".sources" / "codebase-recon.list"
|
||||
|
||||
|
||||
def load_manifest() -> dict:
|
||||
@@ -46,7 +48,14 @@ class ThirdpartySkillsPipelineTests(unittest.TestCase):
|
||||
data = load_manifest()
|
||||
self.assertEqual(
|
||||
[entry["id"] for entry in data["sources"]],
|
||||
["superpowers", "ui-ux-pro-max", "andrej-karpathy-skills"],
|
||||
[
|
||||
"superpowers",
|
||||
"ui-ux-pro-max",
|
||||
"andrej-karpathy-skills",
|
||||
"brooks-lint",
|
||||
"codebase-recon",
|
||||
"codebase-migrate",
|
||||
],
|
||||
)
|
||||
|
||||
def test_karpathy_manifest_uses_copy_skill_dirs_sync_mode(self):
|
||||
@@ -67,6 +76,39 @@ class ThirdpartySkillsPipelineTests(unittest.TestCase):
|
||||
self.assertEqual(ui_skill["sync_mode"], "render_skill")
|
||||
self.assertEqual(ui_skill["snapshot_dir"], "ui-ux-pro-max")
|
||||
|
||||
def test_architecture_skill_sources_use_include_filters(self):
|
||||
data = load_manifest()
|
||||
brooks = next(item for item in data["sources"] if item["id"] == "brooks-lint")
|
||||
self.assertEqual(brooks["sync_mode"], "copy_skill_dirs")
|
||||
self.assertEqual(brooks["snapshot_dir"], "brooks-lint")
|
||||
self.assertEqual(brooks["skills_subdir"], "skills")
|
||||
self.assertEqual(
|
||||
brooks["source_list"], "skills/thirdparty/.sources/brooks-lint.list"
|
||||
)
|
||||
self.assertIn("brooks-audit", brooks["include_skill_dirs"])
|
||||
self.assertIn("brooks-review", brooks["include_skill_dirs"])
|
||||
self.assertIn("_shared", brooks["include_skill_dirs"])
|
||||
|
||||
recon = next(item for item in data["sources"] if item["id"] == "codebase-recon")
|
||||
self.assertEqual(recon["sync_mode"], "copy_skill_dirs")
|
||||
self.assertEqual(recon["snapshot_dir"], "outfitter-agents")
|
||||
self.assertEqual(recon["skills_subdir"], "plugins/outfitter/skills")
|
||||
self.assertEqual(
|
||||
recon["source_list"], "skills/thirdparty/.sources/codebase-recon.list"
|
||||
)
|
||||
self.assertEqual(recon["include_skill_dirs"], ["codebase-recon"])
|
||||
|
||||
migrate = next(
|
||||
item for item in data["sources"] if item["id"] == "codebase-migrate"
|
||||
)
|
||||
self.assertEqual(migrate["sync_mode"], "copy_skill_dirs")
|
||||
self.assertEqual(migrate["snapshot_dir"], "awesome-codex-skills")
|
||||
self.assertEqual(migrate["skills_subdir"], ".")
|
||||
self.assertEqual(
|
||||
migrate["source_list"], "skills/thirdparty/.sources/codebase-migrate.list"
|
||||
)
|
||||
self.assertEqual(migrate["include_skill_dirs"], ["codebase-migrate"])
|
||||
|
||||
def test_superpowers_manifest_prunes_non_superpowers_paths(self):
|
||||
data = load_manifest()
|
||||
superpowers = next(item for item in data["sources"] if item["id"] == "superpowers")
|
||||
@@ -138,6 +180,8 @@ class ThirdpartySkillsPipelineTests(unittest.TestCase):
|
||||
text = SYNC_SCRIPT.read_text(encoding="utf-8")
|
||||
self.assertIn('"\\x1f".join(', text)
|
||||
self.assertIn("while IFS=$'\\x1f' read -r", text)
|
||||
self.assertIn("include_skill_dirs", text)
|
||||
self.assertIn('skill_dir_included "$name" "$include_skill_dirs"', text)
|
||||
self.assertNotIn("while IFS=$'\\t' read -r", text)
|
||||
self.assertNotIn("exclude_skill_dirs", text)
|
||||
self.assertNotIn("is_excluded_skill_dir", text)
|
||||
|
||||
Reference in New Issue
Block a user