Skip to content

Add ad-performance and store-performance skills#1

Open
abdul-ft wants to merge 3 commits intomainfrom
feat/add-ad-and-ecommerce-skills
Open

Add ad-performance and store-performance skills#1
abdul-ft wants to merge 3 commits intomainfrom
feat/add-ad-and-ecommerce-skills

Conversation

@abdul-ft
Copy link
Copy Markdown
Collaborator

@abdul-ft abdul-ft commented May 6, 2026

Summary

Adds two new skills to the marketplace:

  • ad-performance — answer questions about your ad campaigns across Google Ads, Facebook Ads, Microsoft Ads, LinkedIn, TikTok, Pinterest, Snapchat and more. Cross-channel comparisons, ROAS, campaign drill-downs, keyword analysis.

  • store-performance — answer questions about your Shopify store. Revenue trends, average order value, top products, repeat customers, refund rate, seasonality.

Both skills query your Fivetran-synced data directly from your warehouse (BigQuery, Snowflake, or Databricks).

Test plan

  • Marketplace CI check passes
  • /plugin install all@skills-prototype works from a fresh Claude Code session
  • /ad-performance "how are my ads performing?" returns real metrics
  • /store-performance "how is the store doing?" returns real metrics

🤖 Generated with Claude Code

Ports both skills from abdul-ft/analytics-kits into the "all" marketplace
plugin alongside the existing test-skill.

ad-performance — copied from analytics-kits main (post-Luke's PR #3-#6):
  * SKILL.md uses asa.sh validate / setup / resolve flow with the
    no-credentials-in-chat clipboard pattern
  * asa.py + asa.sh: 11 ad-connector pool (google_ads, facebook_ads,
    bingads, linkedin_ads, tiktok_ads, pinterest_ads, snapchat_ads,
    amazon_ads, twitter_ads, reddit_ads, spotify_ads, apple_search_ads,
    google_search_ads_360, google_analytics_4)
  * generate-dashboard.py for HTML report output
  * local/profile.example.json drop zone for fixed-warehouse demos

store-performance — copied from analytics-kits feat/ecommerce-analyzer:
  * SKILL.md follows the same asa.sh pattern
  * asa.py + asa.sh: shopify-only connector pool (model_tier=raw,
    no QDM)
  * 6 verified Snowflake query patterns: headline metrics with PoP,
    monthly GMV trend with YoY, top products by GMV, repeat customer
    rate, refund rate by week, new vs returning revenue
  * local/profile.example.json drop zone

Path references in both SKILL.md files updated from the source-repo
layout (.marketplace/<plugin-name>/scripts/) to the skills-prototype
build-output layout (.marketplace/all/skills/<skill-name>/).

Two helper scripts (asa.py per skill) instead of one merged version
— faster to ship, each skill is self-contained. Refactor to a single
parameterized helper is a follow-up if/when the marketplace adds more
non-ads, non-ecommerce skills.

Build artifacts regenerated via scripts/generate-marketplace.mjs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@abdul-ft abdul-ft changed the title Add ad-performance and store-performance skills to the all plugin Add ad-performance and store-performance skills May 6, 2026
@fivetran-lukealexander
Copy link
Copy Markdown
Collaborator

Looks good to me. I tested locally, and this works as it did with our internal repo.

One nit: "all" is a confusing name for the plugin. Maybe something like "connector-analysis" or something would be better.

@fivetran-lukealexander
Copy link
Copy Markdown
Collaborator

I think we should have @seanlynch-fivetran review this, too.

The "all" name was confusing — addresses review feedback. New name reads
naturally in the install command (`/plugin install fivetran-skills@skills-prototype`)
and lines up with the repo's name.

Touched:
  * scripts/generate-marketplace.mjs — pluginName constant
  * .claude-plugin/marketplace.json — regenerated
  * .marketplace/fivetran-skills/ — regenerated (old .marketplace/all/ deleted)
  * skills/ad-performance/SKILL.md, skills/store-performance/SKILL.md
    — bash path references (16 + 12 occurrences)
  * README.md — install command + Layout section

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment thread skills/store-performance/SKILL.md Outdated
allowed-tools: "bash(snow, snowsql, bq, databricks, python3, pip, open)"
metadata:
short-description: E-commerce store performance analysis from raw Shopify connector data
team: product
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need team anymore, that's an internal concept

metadata:
short-description: E-commerce store performance analysis from raw Shopify connector data
team: product
owner: "Abdul Ghaffar <abdul.ghaffar@fivetran.com>"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm totally fine with you being the owner with your public email, as long as you are :)

Comment thread skills/store-performance/SKILL.md Outdated

## Configuration (run once per session)

This skill uses a local profile at `~/.fivetran/skills/ecommerce-analyzer/profile.json` to remember the user's warehouse and connector preferences across sessions. First run creates it; subsequent runs reuse it.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clever solution! Does this approach need to be specific to ecommerce-anlyzer? could make this profile reusable for other skills.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also if you want to keep the skill name in the path, probably need to change it to store-performance?


1. **Validate the local profile.**
```bash
bash .marketplace/fivetran-skills/skills/store-performance/asa.sh validate
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this path is going to work universally. It'll vary depending on whether the user installed the plugin in the local project or globally. This also makes the installation specific to claude marketplace plugins, not a reusable skill. I think if you replaced with bash [INSERT_SKILL_PATH]/asa.sh, the agent could do the substitution for you

4. **Pick the warehouse CLI** from `{WAREHOUSE_TOOL}`:
- `bq` → `bq query --use_legacy_sql=false --project_id={DATABASE} ...`
- `snowflake_cli` → `snow sql -q ...` (use `{DATABASE}.{SCHEMA}.<table>` in queries; quote `"order"` since it's reserved)
- `databricks_cli` → `databricks sql ...`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably should have an "else" condition if the selected command isn't found for their warehouse


`profile.json` (the populated copy) is gitignored because it contains warehouse identifiers we don't want in a public repo. Only `profile.example.json`, this README, and the `.gitignore` are tracked.

See the "Demo / preconfigured profile" section in `skills/store-performance/SKILL.md` for more.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section doesn't seem to exist?

@@ -0,0 +1,553 @@
---
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, I reviewed store-performance first. I think most of the feedback applies here too

Comment thread skills/ad-performance/SKILL.md Outdated
Trigger on: "how are our ads performing", "ad spend", "campaign performance",
"cost per click", "ROAS", "impressions", "CTR", "ad performance", "marketing analytics",
"compare channels", "cross-channel", "Facebook vs Google", "budget allocation".
allowed-tools: "bash(bq, gcloud, snow, databricks, open, python3)"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably worth unioning the allowed-tools across both

Comment thread skills/ad-performance/SKILL.md Outdated

## Query Rules

- Always: `--project_id={PROJECT_ID} --use_legacy_sql=false`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a bigquery specific rule, and should probably presented that way

Comment thread skills/ad-performance/SKILL.md Outdated
```

**Payload schema** (all sections optional except `title`):
```json
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be worth pulling this template to a standalone file (appears to be slightly more reliable, less context tokens for the skill, especially if this is an optional step)

- Drop `team: product` metadata field (internal-only concept)
- Union allowed-tools across both skills: bq, gcloud, snow, snowsql, databricks, open, python3, pip
- Label the BigQuery-specific `--project_id` / `--use_legacy_sql=false` rule as BQ-only (Snowflake and Databricks have their own connection settings)
- Add a fallback "anything else" case to the warehouse-CLI selector in both SKILL.md files — clear stop message instead of silent failure for unsupported destination types
- Pull the generate-dashboard.py payload schema out of ad-performance/SKILL.md into a standalone dashboard-schema.md (smaller SKILL.md, agent reads it on demand only when the user asks for a visualization)
- Rename profile dirs and env vars to match the actual skill names so they're not stale references to the old plugin names:
  - ecommerce-analyzer → store-performance (dirs, env vars, dashboard description)
  - ad-spend-analyzer → ad-performance (dirs, env vars, dashboard description)
- Update local/README.md install/uninstall paths in both skills to the new fivetran-skills/skills/<name>/ layout

Skipped: replacing `.marketplace/fivetran-skills/skills/<name>/` paths with a `[INSERT_SKILL_PATH]` placeholder. The placeholder approach is cleaner long-term but relies on the agent reliably substituting it across install contexts; current hardcoded path works today and is preferred until the substitution is verified.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@abdul-ft
Copy link
Copy Markdown
Collaborator Author

abdul-ft commented May 7, 2026

@seanlynch-fivetran addressed all of your feedback in the latest commit. One item — replacing hardcoded paths with a placeholder — we'll handle in a follow-up PR. Could you take another look when you have a moment?

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.

3 participants