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:
csh
2026-05-29 12:55:10 +08:00
parent d8eb418277
commit 3023aef8a0
12 changed files with 476 additions and 123 deletions
+45 -1
View File
@@ -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)