diff --git a/skills/thirdparty/thirdparty-skills.yml b/skills/thirdparty/thirdparty-skills.yml index 82a04e1b..361bf156 100644 --- a/skills/thirdparty/thirdparty-skills.yml +++ b/skills/thirdparty/thirdparty-skills.yml @@ -3,6 +3,40 @@ version: 1 skills: + - id: matt-pocock-skills + sync: enabled + upstream_repo: https://github.com/mattpocock/skills.git + upstream_ref: main + upstream_paths: + - skills/engineering + - skills/productivity + - skills/misc + upstream_layout: multi_skill_suite + selected_for: + - requirements grilling and documentation-backed discovery + - specification and ticket decomposition + - test-first implementation and code review + - local ticket lifecycle orchestration + playbook_fit: Matt Pocock engineering workflow skills used by the project playbook + notes: + - Only the curated skill directories declared by the CI manifest are synchronized. + + - id: ui-ux-pro-max + sync: enabled + upstream_repo: https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git + upstream_ref: main + upstream_paths: + - src/ui-ux-pro-max/templates + - src/ui-ux-pro-max/data + - src/ui-ux-pro-max/scripts + upstream_layout: repository_root_skill + selected_for: + - UI and UX design-system decisions + - frontend visual consistency and accessibility guidance + playbook_fit: searchable UI/UX design intelligence for frontend work + notes: + - CI renders the upstream data and templates into the local Codex skill format. + - id: brooks-lint sync: enabled upstream_repo: https://github.com/hyhmrright/brooks-lint diff --git a/test/test_thirdparty_skills_pipeline.py b/test/test_thirdparty_skills_pipeline.py index e72e1ed3..a8620bbd 100644 --- a/test/test_thirdparty_skills_pipeline.py +++ b/test/test_thirdparty_skills_pipeline.py @@ -51,6 +51,26 @@ def extract_workflow_region(name: str) -> str: class ThirdpartySkillsPipelineTests(unittest.TestCase): + def test_human_registry_lists_the_same_sources_as_the_ci_manifest(self): + registry = ( + ROOT / "skills" / "thirdparty" / "thirdparty-skills.yml" + ).read_text(encoding="utf-8") + entries = {} + for chunk in registry.split("\n - id: ")[1:]: + source_id, _, body = chunk.partition("\n") + entries[source_id.strip()] = body + + self.assertEqual( + sorted(entries), + sorted(entry["id"] for entry in load_manifest()["sources"]), + msg="SKILLS.md points at thirdparty-skills.yml as the human-readable " + "source registry, so it has to cover every source CI syncs", + ) + for source_id, body in entries.items(): + for field in ("upstream_repo", "selected_for", "playbook_fit"): + self.assertIn( + f"{field}:", body, msg=f"{source_id} is missing {field}" + ) def test_manifest_declares_all_thirdparty_sources(self): data = load_manifest()