♻️ refactor(skills): separate thirdparty skills into thirdparty/ subdirectory

- Move all third-party skills from codex/skills/ to codex/skills/thirdparty/
- Move .sources/ to codex/skills/thirdparty/.sources/
- Delete systematic-debugging/CREATION-LOG.md (internal dev note, not skill content)
- Update sync_thirdparty_skills.sh paths and conflict detection
- Update thirdparty_skills.json source_list paths
- Update install_skills_action to collect from both own and thirdparty dirs,
  logging [thirdparty] tag for third-party installs
- Update SKILLS.md directory structure docs
- Update tests to reflect new paths

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
csh
2026-05-15 14:50:02 +08:00
co-authored by Claude Opus 4.7
parent 64950e7979
commit b3df41205d
92 changed files with 1606 additions and 27 deletions
+6 -6
View File
@@ -14,9 +14,9 @@ LEGACY_WORKFLOW = ROOT / ".gitea" / "workflows" / "update-thirdparty-superpowers
UPDATE_SCRIPT = ROOT / ".gitea" / "ci" / "update_thirdparty_skills.sh"
SYNC_SCRIPT = ROOT / ".gitea" / "ci" / "sync_thirdparty_skills.sh"
SKILLS_MD = ROOT / "SKILLS.md"
SUPERPOWERS_LIST = ROOT / "codex" / "skills" / ".sources" / "superpowers.list"
UI_UX_PRO_MAX_LIST = ROOT / "codex" / "skills" / ".sources" / "ui-ux-pro-max.list"
UI_UX_PRO_MAX_DIR = ROOT / "codex" / "skills" / "ui-ux-pro-max"
SUPERPOWERS_LIST = ROOT / "codex" / "skills" / "thirdparty" / ".sources" / "superpowers.list"
UI_UX_PRO_MAX_LIST = ROOT / "codex" / "skills" / "thirdparty" / ".sources" / "ui-ux-pro-max.list"
UI_UX_PRO_MAX_DIR = ROOT / "codex" / "skills" / "thirdparty" / "ui-ux-pro-max"
def load_manifest() -> dict:
@@ -105,7 +105,7 @@ class ThirdpartySkillsPipelineTests(unittest.TestCase):
def test_skills_doc_points_to_generic_thirdparty_sources(self):
text = SKILLS_MD.read_text(encoding="utf-8")
self.assertIn("## 9. Third-party Skills", text)
self.assertIn("来源:`codex/skills/.sources/`(第三方来源清单目录)。", text)
self.assertIn("来源:`codex/skills/thirdparty/.sources/`(第三方来源清单目录)。", text)
self.assertNotIn("Third-party Skills (superpowers)", text)
def test_superpowers_and_ui_ux_pro_max_source_lists_exist(self):
@@ -169,10 +169,10 @@ class ThirdpartySkillsPipelineTests(unittest.TestCase):
)
generated_list = (
work / "codex" / "skills" / ".sources" / "andrej-karpathy-skills.list"
work / "codex" / "skills" / "thirdparty" / ".sources" / "andrej-karpathy-skills.list"
)
generated_skill = (
work / "codex" / "skills" / "karpathy-guidelines" / "SKILL.md"
work / "codex" / "skills" / "thirdparty" / "karpathy-guidelines" / "SKILL.md"
)
self.assertTrue(generated_list.is_file())
self.assertTrue(generated_skill.is_file())