Conversation
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>
|
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. |
|
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>
| 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 |
There was a problem hiding this comment.
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>" |
There was a problem hiding this comment.
I'm totally fine with you being the owner with your public email, as long as you are :)
|
|
||
| ## 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. |
There was a problem hiding this comment.
Clever solution! Does this approach need to be specific to ecommerce-anlyzer? could make this profile reusable for other skills.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 ...` |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
This section doesn't seem to exist?
| @@ -0,0 +1,553 @@ | |||
| --- | |||
There was a problem hiding this comment.
FYI, I reviewed store-performance first. I think most of the feedback applies here too
| 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)" |
There was a problem hiding this comment.
probably worth unioning the allowed-tools across both
|
|
||
| ## Query Rules | ||
|
|
||
| - Always: `--project_id={PROJECT_ID} --use_legacy_sql=false` |
There was a problem hiding this comment.
I think this is a bigquery specific rule, and should probably presented that way
| ``` | ||
|
|
||
| **Payload schema** (all sections optional except `title`): | ||
| ```json |
There was a problem hiding this comment.
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>
|
@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? |
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
/plugin install all@skills-prototypeworks 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