Skip to content

feat(skills): add 5 Shopify skills (core, storefront, themes, apps, functions) - #11

Merged
deve1993 merged 1 commit into
mainfrom
fix/skill-catalog-recovery
Aug 26, 2026
Merged

deve1993 merged 1 commit into
mainfrom
fix/skill-catalog-recovery

Conversation

@deve1993

@deve1993 deve1993 commented Aug 26, 2026 •

Copy link
Copy Markdown
Collaborator

Adds a Shopify skill set to the production bundle: a routing hub plus one skill per Shopify surface.

Skill Covers
shopify-core Hub — picks the right surface, plus the shared layer (quarterly API versions, CLI, dev stores, auth, metafields/metaobjects, webhooks, rate limits, EU compliance)
shopify-storefront Headless with Hydrogen (React Router) and Oxygen deploys
shopify-themes Liquid, Online Store 2.0, sections/blocks, theme editor
shopify-apps Embedded admin apps — Polaris web components, App Bridge, Admin GraphQL, billing
shopify-functions Checkout logic compiled to Wasm — discounts, validations, delivery/payment customization, cart transform

shopify-core routes to the other four and they are written to be read together when a request spans two surfaces.

Where they live, and why

Under packages/codegraph/data/skill/ — the git-tracked bundle the Dockerfile COPYs into the image. The .claude/skill workspace mirror is a gitignored symlink to .opencode/, so authoring there alone means the skill never ships. That is exactly the trap 27e16dd had to clean up for 29 skills; this avoids repeating it.

CATEGORY_MAP

detectCategory() resolves from a hardcoded map in packages/storage/src/import-skills.ts. The five names are added under CMS, alongside the existing shopify-expert. Without that entry they import as Other.

Verification

import-skills . locally took the catalog 328 → 333 skills. All five rows landed active / domain / CMS, and FTS matches on hydrogen, liquid and dawn. The skill-guard gate quarantined nothing new — active went up by exactly 5, and the two pending rows (webxr-spatial, shopify-expert) were already pending beforehand.

Frontmatter is clean: no CRLF, no BOM, name + description present, so the normalisation e917308 had to apply does not resurface here.

Overlap worth a look

shopify-expert already exists in .agents/skills/ (184 lines, MIT, third-party, currently pending) and covers the same four surfaces generically. It will compete with shopify-core in routing on generic Shopify queries. Not touched in this PR — deprecating it is a separate call.

Known gap, pre-existing and not addressed here

walkDir() imports only SKILL.md. These skills are written for progressive disclosure — shopify-storefront alone carries 7 reference files and a script — and those directories ship inside the image but no MCP tool serves them, so skill_read returns SKILL.md alone. Same for ui-ux-pro-max, seo-technical and every other bundled skill with a references/ directory. Worth its own change.

Unrelated, but it surfaced while verifying this

Production is currently serving a pruned catalog:

⚠️  Only 39/323 skills are ACTIVE — 284 are deprecated/pending
total: 323   active: 39   deprecated: 281   pending: 3

Since only active skills are routed, skill_route returns whatever survived regardless of the query. The recovery tooling for this — import-skills --reactivate from 49af87e — is already on main and already deployed, but a redeploy does not repair the rows on its own: the boot import passes status: NULL and the upsert deliberately preserves existing status. It has to be run explicitly in the container. Merging this PR does not fix that, and these five skills will import active either way.

🤖 Generated with Claude Code

…unctions)

Imported from 5 .skill bundles: a routing hub (shopify-core) plus one skill
per Shopify surface — Hydrogen/Oxygen headless (shopify-storefront), Liquid
OS 2.0 themes (shopify-themes), embedded admin apps with Polaris/App Bridge
(shopify-apps), and checkout logic in Wasm (shopify-functions).

Placed under packages/codegraph/data/skill/ — the git-tracked bundle the
Dockerfile COPYs into the image — since the .claude/skill workspace mirror
is gitignored and never reaches prod (same trap as 27e16dd).

detectCategory() resolves from a hardcoded CATEGORY_MAP, so the five names
are added there under CMS alongside shopify-expert; without that they would
import as "Other".

Local verification: import-skills took the catalog 328 -> 333 skills, all
five rows active/domain/CMS, FTS matching on hydrogen, liquid and dawn.
The security gate quarantined nothing new (active +5 exactly).

Known gap, pre-existing and not addressed here: walkDir() imports only
SKILL.md, so the references/ and scripts/ directories ship in the image but
are not readable through skill_read. These skills are written for
progressive disclosure and lose that layer when loaded over MCP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@deve1993 deve1993 changed the title Skill catalog: recovery tooling, security gate, and 60+ net-new skills feat(skills): add 5 Shopify skills (core, storefront, themes, apps, functions) Aug 26, 2026
@deve1993
deve1993 merged commit ec89a29 into main Aug 26, 2026
1 check 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