Skip to content

fix(registry): skip test fixture SKILL.md files - #304

Merged
harlan-zw merged 1 commit into
mainfrom
fix/skip-fixture-skills
Sep 29, 2026
Merged

harlan-zw merged 1 commit into
mainfrom
fix/skip-fixture-skills

Conversation

@harlan-zw

Copy link
Copy Markdown
Collaborator

❓ Type of change

  • 📖 Documentation
  • 🐞 Bug fix
  • 👌 Enhancement
  • ✨ New feature
  • 🧹 Chore
  • ⚠️ Breaking change

📚 Description

harlan-zw/nuxt-ai-ready ships one Skill plus two fixtures under test/fixtures/agent-skills/skills/. The indexer counted all three, so the real Skill lives at /gh/harlan-zw/nuxt-ai-ready/nuxt-ai-ready instead of /gh/harlan-zw/nuxt-ai-ready. Any maintainer who tests a package Skill hits the same thing.

Every discovery path now asks one predicate. A SKILL.md is ignored when a parent folder is test, tests, __tests__, fixture, fixtures, __fixtures__, e2e, testdata or node_modules. The Skill's own folder never counts, so .claude/skills/test/SKILL.md (facebook/react) stays.

Production today, resolved rows only:

Parent folder Rows
tests 104
fixtures 150
test 41
__tests__ 7
fixture 5
e2e 4
testdata, __fixtures__, node_modules 0

That is 180 rows across 36 Repositories after overlap. None has a like. Five are indexable, and all five are fixtures: boshu2/agentops known-good and known-bad, garrytan/gstack alpha and beta, and one pbakaus/impeccable oracle workspace.

I left examples, samples and testing in. They hold 139 resolved rows, 48 indexable, and a lot of them are real Skills: muratcankoylan/agent-skills-for-context-engineering/examples/*, skills/testing/* in several Skill packs. Some are demo noise (langchain-ai/deepagents/examples, sylphai-inc/atskills), so a later pass could handle those per Repository.

📝 Migration

Existing fixture rows go through the sweep sync already uses for a deleted Skill: path_missing, quarantined, noindex. An unchanged tree SHA skips that sweep, so 0124_resync_fixture_skill_repos.sql clears last_tree_sha on the 36 affected Repositories. The deploy applies it, and the hourly sync reaches each Repository on its normal rotation. The SQL only chooses which Repositories to resync; the TypeScript predicate still decides which rows go.

Open question: a Repository whose only SKILL.md files are fixtures now syncs as no_supported_skill_paths and gets broken_since. That looks right to me, but it drops out of the general rotation.

Architecture: every discovery path now asks isRegistrySkillPath; migration 0124 forces a content sync that sweeps fixture rows

🤖 AI disclosure: Harlan Agent Kit modified this description. My AI open-source policy.

A Repository that ships one Skill beside test fixtures was counted as a multi-Skill Repository, so its Skill lost the repository URL. One shared path predicate now decides what counts as a Skill at every discovery path, and a migration clears the tree cursor on affected Repositories so the next sync retires the fixture rows.
harlan-zw added a commit that referenced this pull request Sep 29, 2026
The migration naming check rejects a gap, and 0124 is not on main yet. #304 also claims 0124, so whichever pull request merges second renumbers.
@harlan-zw
harlan-zw merged commit 95a1ebf into main Sep 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant