agentleFS
Sheldon-desouzaSheldon-desouza/claude-shopify-seo/skills/shopify-seo-learn/SKILL.md

shopify-seo-learn

Skill0 starsChanged 2 months agoMITView on GitHub

Learn the shop from its own catalogue and sales, then rank what to optimise by revenue. Use for: learn my store, what should I fix first, build my profile automatically, which products matter, what do my sales tell me about my copy.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the shop instead of asking about it.

    line 8
  2. Very specific:

    If a profile already exists, merge.

    line 26
  3. Distinctive:

    If the shop has a physical presence, separate them before ranking anything, or you will send the owner to optimise a page for a product …

    line 64
  4. Distinctive:

    Write the queue highest revenue first.

    line 89
  5. Distinctive:

    Do not write a signal you cannot attach a figure to.

    line 103

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Learn

Read the shop instead of asking about it. Two sources, both already available through the Shopify MCP: what is in the catalogue, and what actually sold. Together they answer a question a checklist cannot, which is which page is worth touching first.

This skill writes facts. It does not rewrite copy. Run shopify-seo-fix afterwards.

What it produces

Everything lands in the owner's own directory, never in this repo:

<their profile dir>/
  catalogue.json      every live product, its real facts
  revenue.json        180 days of sales, ranked
  queue.md            what to fix, in order, with the reason
  signals.md          what the sales imply about the copy

If a profile already exists, merge. Never overwrite a human-written field with a derived one. Mark every derived field with source: "derived" and the date, so a later reader can tell what came from a machine and what came from the owner.

Step 1, the catalogue

Pull every product: title, handle, type, vendor, tags, options, size range, price range, inventory state, and the first image. Record what you find, not what you expect.

Extract and write down the shop's own vocabulary, because this is what stops later skills inventing words the brand does not use:

  • Product family names, the words that repeat across titles
  • Materials and fabrics as they are actually spelled
  • Colour names, which are often proprietary and must never be paraphrased
  • The real size range, stated separately for each category where they differ
  • Price bands per product type

Position 1 is the model shot. On most fashion stores the first image is the garment on a person and later images are fabric or detail. Take alt text and any visual claim from position 1.

Step 2, the sales

FROM sales SHOW gross_sales, orders GROUP BY product_title SINCE -180d

Then read the result carefully, because three rows will mislead you.

A blank product title is not a product. It is custom or bespoke line items, usually written by hand at a counter. On a store with a showroom this row can be the largest by revenue. Record it as a channel fact, never as a product to optimise.

A service is not a product either. Rows like "Express Service", "Gift Wrap" or "Alterations" are signals about what customers worry about. An express service selling in volume is customers telling you the lead time matters. That belongs in signals.md and almost certainly belongs in the product copy, but the service page itself is rarely the page to optimise.

Point of sale and online are mixed together. FROM sales includes counter and draft orders. If the shop has a physical presence, separate them before ranking anything, or you will send the owner to optimise a page for a product that actually sells in person:

source_name:pos            counter sales
source_name:shopify_draft_order   invoices and bespoke

Query orders through GraphQL with those filters and subtract. State the split plainly in revenue.json. If you cannot separate them, say the number is mixed rather than presenting it as online demand.

Step 3, the queue

Rank real products by online revenue, then check each one's copy against what you learned:

CheckWhy it ranks
Description under 300 charactersNothing for search or an AI to quote
No lead time statedThe single most common cause of an abandoned basket at this price
No fabric or care detailCannot answer the question a buyer will ask
Meta title missing or duplicatedFree position, thrown away
Alt text missing on image 1Free relevance, thrown away
No schemaInvisible to AI answers

Write the queue highest revenue first. Fixing the description of a product that sold four times beats fixing one that sold once, and revenue is the only honest tiebreak.

Step 4, the signals

This is the part worth the owner's attention. Write plain sentences, each tied to a number:

  • A high-selling express or rush option means lead time is a live worry. Say so, and name the pages that do not mention it.
  • One colour outselling its siblings several times over is a merchandising fact, and the copy on the others may be doing nothing for them.
  • A product type with many orders and thin descriptions is the largest single opportunity.
  • A best seller with no schema is losing AI answers it would otherwise win.

Do not write a signal you cannot attach a figure to.

Honest limits

Say these out loud rather than letting the owner assume otherwise.

  • This learns what sold, which is not what people searched for. Keywords come from Search Console, and there is no connector for it, so that needs a CSV export. Until then, do not present catalogue words as keyword research.
  • Revenue attributes to the product, not to the copy. A best seller may sell despite its description. Treat the ranking as where to look, never as proof the copy works.
  • Six months of sales on a small store is a small sample. Say so where a ranking rests on three or four orders.
  • Prices and stock go stale. Stamp the date on everything and re-run before publishing.

Re-running

Monthly is enough for most shops, or after a collection launch. On a re-run, diff against the previous file and report what moved, since a product climbing the ranking is itself a signal.

Confidentiality

The profile is the owner's commercial data: prices, margins, what sells and what does not. It stays in their directory. It never goes in this repository, an issue, a commit or an example. Examples shipped with this plugin are fictional and must stay fictional.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.