From c6b92b44541f1f692593a7ac3b89abc813abb0d1 Mon Sep 17 00:00:00 2001 From: "Beau Beauchamp, WebTigers" Date: Sun, 16 Aug 2026 00:54:11 -0400 Subject: [PATCH] Skills: ship WebTigers/Skills as a built-in first-party source MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WebTigers/Skills (github.com/WebTigers/Skills) is our own first-party skill collection for building on Tiger — module, web service, admin screen, design. Wire it as a third built-in source via the marketplace.json adapter so every install browses the reference pack out of the box (alongside the official anthropics/skills and the Composio community set). - Register 'webtigers-skills' in Tiger_Skill_Index::sources() (Marketplace adapter, .claude-plugin/marketplace.json at repo root). - Seed its cache in the unit test's BUILTIN_SOURCES + assert it's registered. - TIGERSKILLS.md: three built-in sources now. Co-Authored-By: Claude Opus 4.8 --- TIGERSKILLS.md | 11 +++++++---- library/Tiger/Skill/Index.php | 2 ++ tests/Unit/Skill/SkillIndexTest.php | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/TIGERSKILLS.md b/TIGERSKILLS.md index 2daa790..c29292b 100644 --- a/TIGERSKILLS.md +++ b/TIGERSKILLS.md @@ -69,7 +69,9 @@ curator's blessing. - **Search the supported repos** — each *supported* well-known repo gets a **`Tiger_Skill_Source`** adapter that knows THAT repo's layout, scans it, and normalizes its skills into one list. **`Tiger_Skill_Index`** runs the adapters, caches each independently (last-good on outage — the `Tiger_Module_Registry` pattern), - then merges + de-dupes + searches. Two built-in supported sources ship: + then merges + de-dupes + searches. Three built-in supported sources ship: + - **`WebTigers/Skills`** — WebTigers' own **first-party** skills for building on Tiger (module, web + service, admin screen, design), via **`Tiger_Skill_Source_Marketplace`** (§2a). The reference pack. - **`anthropics/skills`** — the official collection, via **`Tiger_Skill_Source_SkillsDir`** (the raw `skills//SKILL.md` layout: one git-trees call + a raw fetch per `SKILL.md`). Right for an official-sized repo (~17 skills). @@ -112,9 +114,10 @@ owner.** > **BUILT (Phase 1):** `Tiger_Skill_Source` (+ `parseFrontmatter`, spec-correct: name + description, block > scalars), `Tiger_Skill_Source_SkillsDir`, `Tiger_Skill_Source_Marketplace` (the `.claude-plugin/marketplace.json` -> reader, §2a), `Tiger_Skill_Source_Url`, `Tiger_Skill_Index` (scan / cache / merge / search). Two built-in -> sources: `anthropics/skills` (17, SkillsDir) + `ComposioHQ/awesome-claude-skills` (107, Marketplace). -> Install + the active-set (§3) + the admin surface (§6) shipped in increment 2. +> reader, §2a), `Tiger_Skill_Source_Url`, `Tiger_Skill_Index` (scan / cache / merge / search). Three built-in +> sources: `WebTigers/Skills` (first-party, Marketplace) + `anthropics/skills` (17, SkillsDir) + +> `ComposioHQ/awesome-claude-skills` (107, Marketplace). Install + the active-set (§3) + the admin surface +> (§6) shipped in increment 2. --- diff --git a/library/Tiger/Skill/Index.php b/library/Tiger/Skill/Index.php index 167cf95..e100dec 100644 --- a/library/Tiger/Skill/Index.php +++ b/library/Tiger/Skill/Index.php @@ -43,6 +43,8 @@ public static function clearSources() public static function sources() { $out = []; + // Built-in: WebTigers' own first-party skills for building on Tiger (via its .claude-plugin/marketplace.json). + $out['webtigers-skills'] = new Tiger_Skill_Source_Marketplace('webtigers-skills', 'WebTigers Skills', 'WebTigers/Skills', 'main', '.claude-plugin/marketplace.json', ''); // Built-in: the official Anthropic Agent Skills collection (skills/*/SKILL.md). $out['anthropic-skills'] = new Tiger_Skill_Source_SkillsDir('anthropic-skills', 'Anthropic Skills', 'anthropics/skills', 'main', 'skills'); // Built-in: the Composio community collection — 100+ skills via its .claude-plugin/marketplace.json diff --git a/tests/Unit/Skill/SkillIndexTest.php b/tests/Unit/Skill/SkillIndexTest.php index 76148de..5fc9136 100644 --- a/tests/Unit/Skill/SkillIndexTest.php +++ b/tests/Unit/Skill/SkillIndexTest.php @@ -26,7 +26,7 @@ final class SkillIndexTest extends UnitTestCase { /** Every built-in source id — each gets a FRESH empty cache so no test touches the network. */ - private const BUILTIN_SOURCES = ['anthropic-skills', 'composio-skills']; + private const BUILTIN_SOURCES = ['webtigers-skills', 'anthropic-skills', 'composio-skills']; private array $builtinCaches = []; @@ -127,6 +127,7 @@ public function index_merges_a_source_and_searches_it(): void public function built_in_sources_are_registered(): void { $sources = Tiger_Skill_Index::sources(); + $this->assertArrayHasKey('webtigers-skills', $sources, 'the first-party WebTigers collection ships as a supported source'); $this->assertArrayHasKey('anthropic-skills', $sources, 'the official collection ships as a supported source'); $this->assertArrayHasKey('composio-skills', $sources, 'the Composio community collection ships as a supported source'); }