Agent skill

Setup Test Stores

by woocommerce in woocommerce/woocommerce-android

Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local.

GPL-2.0Auto-check: notesMobile

Install Setup Test Stores

skills CLI
$ npx skills add woocommerce/woocommerce-android --skill setup-test-stores -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install woocommerce/woocommerce-android setup-test-stores --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/woocommerce/woocommerce-android.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/setup-test-stores .claude/skills/setup-test-stores && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
setup-test-stores
GitHub stars
319
Token cost
~1.4k tokens
SKILL.md length
553 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-2.0

At a glance

Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local.

  • Works in 6 steps: Make sure the WordPress.com account is… → Check whether setup is already usable.… → Provision two sites. The lab store, and… → …
  • Maestro setup is missing
  • SKILL.md covers Prerequisites, Steps, Verifying and What the provisioned store…, plus 1 more section
  • Calls curl; needs MAESTRO_WOO_LAB_WPCOM_PASSWORD and JN_PASSWORD

What it does

Setup Test Stores is an agent skill from woocommerce/woocommerce-android. Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local. Use when Maestro setup is missing, when .env.local points at an expired store, or when a clean store is wanted.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering Mobile testing and debugging. It works with WooCommerce, WordPress and Android. The repository describes itself as: WooCommerce Android app. The licence is GPL-2.0.

When your agent uses it

  • Maestro setup is missing
  • .env.local points at an expired store
  • A clean store is wanted

Example prompts

  • “/setup-test-stores”

Requirements

  • A credential in MAESTRO_WOO_LAB_CONSUMER_KEY
  • A credential in MAESTRO_WOO_CONSUMER_KEY
  • Pre-approved tools (allowed-tools): Bash, Read, mcp__context-a8c__context-a8c-load-provider, mcp__context-a8c__context-a8c-execute-tool

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Make sure the WordPress.com account is available. The script needs a test account
  2. Check whether setup is already usable. If .maestro/.env.local exists, probe the
  3. Provision two sites. The lab store, and a WooCommerce site without Jetpack for
  4. Fetch their passwords.
  5. Configure the stores. Pass the passwords through the environment so they never land
  6. Report the store URL and blog ID. Do not print any credential.

What it can do on your machine

Read from SKILL.md and the folder at commit 309d0f5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • mcp__context-a8c__context-a8c-load-provider
    • mcp__context-a8c__context-a8c-execute-tool

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • MAESTRO_WOO_LAB_WPCOM_PASSWORD
    • JN_PASSWORD
    • MAESTRO_WOO_LAB_CONSUMER_KEY
    • MAESTRO_WOO_CONSUMER_KEY
    • MAESTRO_WOO_LAB_CONSUMER_SECRET
    • MAESTRO_WOO_CONSUMER_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Setup Test Stores loads about 1.4k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 553 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:3
    WooCommerce API keys, and write .maestro/.env.local. Use when Maestro setup is missing, when .env.local points at an exp
  • NoteMentions a .env fileSKILL.md:25
    ction account. The account is read from `.env.local`, or
  • NoteMentions a .env fileSKILL.md:35
    If `.env.local` has no `MAESTRO_WOO_LAB_WPCOM_EMAIL` / `MAESTRO_WOO_LAB_WPCOM_PASSWORD`,
  • NoteMentions a .env fileSKILL.md:46
    setup is already usable.** If `.maestro/.env.local` exists, probe the
  • NoteMentions a .env fileSKILL.md:50
    ( set -a; . .maestro/.env.local; set +a
  • NoteMentions a .env fileSKILL.md:91
    `.maestro/.env.local`.
  • NoteMentions a .env fileSKILL.md:93
    This assumes `.env.local` already has `MAESTRO_WOO_LAB_WPCOM_EMAIL` and
  • NoteMentions a .env fileSKILL.md:118
    es the WordPress.com account already in `.env.local`.
  • NoteMentions a .env fileSKILL.md:120
    - The previous `.env.local` is backed up outside the repository, because `.gitignore`
  • NoteMentions a .env fileSKILL.md:121
    matches `.env.local` exactly and a sibling backup file would not be ignored.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from woocommerce/woocommerce-android at commit 309d0f5, republished under its GPL-2.0 licence (© woocommerce). 553 words, ~1,352 tokens.

Download SKILL.mdSave it as .claude/skills/setup-test-stores/SKILL.md (or your agent's skills folder).
name
setup-test-stores
description
Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local. Use when Maestro setup is missing, when .env.local points at an expired store, or when a clean store is wanted.
allowed-tools
Bash, Read, mcp__context-a8c__context-a8c-load-provider, mcp__context-a8c__context-a8c-execute-tool
user-invocable
true
argument-hint
[--fresh]

Set up a Maestro test store

Provisions a Jurassic Ninja (JN) site and configures it as the Maestro lab store. Site creation is only possible through the jurassic-ninja ContextA8C MCP, so this skill drives that part; everything after "site exists and its password is known" is handled by .maestro/scripts/setup-jn-store.sh, which a developer can also run by hand against a site created in a browser.

Prerequisites

  • ContextA8C MCP configured with the jurassic-ninja provider.
  • wc.oauth.app_id and wc.oauth.app_secret present in ~/.configure/woocommerce-android/secrets/secrets.properties (see Environment Setup in AGENTS.md).
  • expect on PATH (ships with macOS) for password-based SSH.
  • A WordPress.com test account with two-factor authentication disabled. The OAuth password grant used to connect Jetpack cannot answer a 2FA challenge non-interactively. Never use a personal or production account. The account is read from .env.local, or from MAESTRO_WOO_LAB_WPCOM_EMAIL / MAESTRO_WOO_LAB_WPCOM_PASSWORD in the environment; see step 0.

Steps

  1. Make sure the WordPress.com account is available. The script needs a test account to connect Jetpack to, and it cannot prompt when run by an agent because there is no terminal attached; it will exit with a message naming what is missing.

    If .env.local has no MAESTRO_WOO_LAB_WPCOM_EMAIL / MAESTRO_WOO_LAB_WPCOM_PASSWORD, stop and ask the user to either add those two lines themselves, or run the script directly in their own terminal, where it prompts without echoing:

    bash
    .maestro/scripts/setup-jn-store.sh --site <domain>.jurassic.ninja

    Do not ask the user to paste a password into the conversation, and never pass one as a command-line argument.

  2. Check whether setup is already usable. If .maestro/.env.local exists, probe the store in one bash call that sources the file, so no credential is read into the chat:

    bash
    ( set -a; . .maestro/.env.local; set +a
      curl -s -o /dev/null -w '%{http_code}' \
        -u "${MAESTRO_WOO_LAB_CONSUMER_KEY:-$MAESTRO_WOO_CONSUMER_KEY}:${MAESTRO_WOO_LAB_CONSUMER_SECRET:-$MAESTRO_WOO_CONSUMER_SECRET}" \
        "$MAESTRO_WOO_LAB_JETPACK_STORE_URL/wp-json/wc/v3/products?per_page=1" )

    A 200 means the store is alive and the keys work; report that and stop, unless the user passed --fresh. Anything else means the store is gone or expired: continue, and reuse the existing WP.com account lines rather than asking for them again.

  3. Provision two sites. The lab store, and a WooCommerce site without Jetpack for login_no_jetpack:

    provision-site  features: {"woocommerce":"true","woocommerce-import-sample-data":"true","jetpack":"true"}
    provision-site  features: {"woocommerce":"true","jetpack":"false"}

    Note both returned domains.

  4. Fetch their passwords.

    list-sites  domain: <domain>, include_passwords: true, include_config: true

    JN_PASSWORD in the returned config is both the wp-admin and the SSH password. The admin username is demo.

    Do not echo these values in your reply.

  5. Configure the stores. Pass the passwords through the environment so they never land in ps output:

    bash
    JN_SSH_PASS='<lab JN_PASSWORD>' JN_NO_JETPACK_SSH_PASS='<no-Jetpack JN_PASSWORD>' \
      .maestro/scripts/setup-jn-store.sh --site <lab domain> --no-jetpack-site <no-Jetpack domain>

    The script waits for JN to finish provisioning (it answers HTTP before its plugins finish installing), connects Jetpack, creates the API keys, and writes .maestro/.env.local.

    This assumes .env.local already has MAESTRO_WOO_LAB_WPCOM_EMAIL and MAESTRO_WOO_LAB_WPCOM_PASSWORD. If it does not, see step 0.

  6. Report the store URL and blog ID. Do not print any credential.

Show full SKILL.md (129 more words)Show less

Verifying

bash
.maestro/scripts/lint-env.py --seed

What the provisioned store supports

A fresh store has the WooCommerce sample products, and the script adds 25 completed orders, one customer and a maestro10 coupon, so the product, order and dashboard flows run against it.

The no-Jetpack fixture (MAESTRO_WOO_NO_JETPACK_*) is written from the second site. The other negative-login fixtures (MAESTRO_WOO_NOT_A_WOO_STORE_*, MAESTRO_WOO_WRONG_ACCOUNT_STORE_URL) are shared read-only sites from the smoke testing guide and are filled in by hand.

Notes

  • JN sites expire after 7 days of inactivity. Re-run this skill when a store stops responding; it reuses the WordPress.com account already in .env.local.
  • Only test stores and test accounts. Destructive flows publish and delete real data.
  • The previous .env.local is backed up outside the repository, because .gitignore matches .env.local exactly and a sibling backup file would not be ignored.

© woocommerce, GPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/setup-test-stores of woocommerce/woocommerce-android.

Open the folder on GitHubat commit 309d0f5

Compare with similar skills

Setup Test Stores next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Setup Test Stores compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Setup Test Stores this skillwoocommerce/woocommerce-android319—~1.4kAutomated safety check: NotesGPL-2.0
Run Jetpack Android Appwordpress-mobile/WordPress-Android3.2k—~886Automated safety check: PassGPL-2.0
Mobilerun Docs Referencedroidrun/mobilerun9.6k—~943Automated safety check: PassMIT
Appiumblokadaorg/blokada3.3k—~3.5kAutomated safety check: PassMPL-2.0
Phone HarnessShawnPana/phone-harness3.2k—~4.3kAutomated safety check: PassMIT
Phoneagentrounak/PhoneAgent799—~2.2kAutomated safety check: PassMIT

Similar skills

  • Run Jetpack Android App

    wordpress-mobile/WordPress-Android

    Builds the Jetpack debug app with Gradle and installs it on a connected Android device or an emulator started from an available AVD.

    3.2k GitHub stars~886 tokensUpdated today
    MobileAuto-check passed
  • Mobilerun Docs Reference

    droidrun/mobilerun

    Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.

    9.6k GitHub stars~943 tokensUpdated 4 days ago
    MobileAuto-check passed
  • Appium

    blokadaorg/blokada

    A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.

    3.3k GitHub stars~3.5k tokensUpdated today
    MobileAuto-check passed
  • Phone Harness

    ShawnPana/phone-harness

    Control the user's phone — an iPhone through the Mac's iPhone Mirroring window, an Android over adb, or a rented cloud Android: open apps, tap, type, swipe, read the screen.

    3.2k GitHub stars~4.3k tokensUpdated today
    MobileAuto-check passed
  • Phoneagent

    rounak/PhoneAgent

    Control a connected iPhone, iOS simulator, Android emulator, or Android device from macOS through PhoneAgent's JSON-RPC bridge.

    799 GitHub stars~2.2k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Simvyn

    pranshuchittora/simvyn

    Operate iOS Simulators, Android Emulators, and connected mobile devices with Simvyn.

    438 GitHub stars~938 tokensUpdated yesterday
    MobileAuto-check passed

More from woocommerce/woocommerce-android

All 11 skills in this repo
  • PR

    woocommerce/woocommerce-android

    Create a pull request following project conventions. An agent skill from woocommerce/woocommerce-android.

    319 GitHub stars~1.3k tokensUpdated today
    Auto-check: notes
  • PR Feedback

    woocommerce/woocommerce-android

    Address PR reviewer feedback by evaluating comments, proposing fixes, and executing after user approval.

    319 GitHub stars~1.3k tokensUpdated today
    Auto-check: notes
  • UI Review

    woocommerce/woocommerce-android

    Generate screenshot coverage for screen-level Compose previews from the current diff or a specific target, check required visual and data variations, and produce a compact visual report

    319 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Review

    woocommerce/woocommerce-android

    Review code changes against project architecture, style, and conventions

    319 GitHub stars~600 tokensUpdated today
    Auto-check: notes
  • Smoke Tests

    woocommerce/woocommerce-android

    Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the…

    319 GitHub stars~1.7k tokensUpdated today
    Auto-check: notes
  • Verify On Device

    woocommerce/woocommerce-android

    Build, install, and visually verify the app on an Android emulator or device.

    319 GitHub stars~10k tokensUpdated today
    Auto-check: notes

Categories

Questions about Setup Test Stores

What does Setup Test Stores do?

Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local. Setup Test Stores is an agent skill from woocommerce/woocommerce-android.local.

When should I use Setup Test Stores?

Setup Test Stores fits situations like: maestro setup is missing; .env.local points at an expired store; A clean store is wanted.

How do I install Setup Test Stores in Claude Code?

Run `npx skills add woocommerce/woocommerce-android --skill setup-test-stores -a claude-code`. Or copy the skill folder (.agents/skills/setup-test-stores in woocommerce/woocommerce-android) into .claude/skills/setup-test-stores in your project. Claude Code loads it when a task matches its description.

How do I install Setup Test Stores in Codex?

Run `npx skills add woocommerce/woocommerce-android --skill setup-test-stores -a codex`. Or copy the skill folder (.agents/skills/setup-test-stores in woocommerce/woocommerce-android) into .agents/skills/setup-test-stores in your project. Codex loads it when a task matches its description.

Can I use Setup Test Stores in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add woocommerce/woocommerce-android --skill setup-test-stores -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setup-test-stores, .gemini/skills/setup-test-stores, .github/skills/setup-test-stores and .opencode/skills/setup-test-stores in your project.

What does Setup Test Stores need to run?

Going by SKILL.md and its folder, Setup Test Stores needs the command-line tools its instructions call (curl) and credentials named MAESTRO_WOO_LAB_WPCOM_PASSWORD, JN_PASSWORD, MAESTRO_WOO_LAB_CONSUMER_KEY and MAESTRO_WOO_CONSUMER_KEY. Our summary lists: A credential in MAESTRO_WOO_LAB_CONSUMER_KEY; A credential in MAESTRO_WOO_CONSUMER_KEY. Its frontmatter pre-approves these tools: Bash, Read, mcp__context-a8c__context-a8c-load-provider, mcp__context-a8c__context-a8c-execute-tool.

Does Setup Test Stores access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Setup Test Stores safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Setup Test Stores use?

Setup Test Stores is published under the GPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Setup Test Stores use?

About 1.4k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Setup Test Stores?

Skills that share tags, products or a category with Setup Test Stores: Run Jetpack Android App (wordpress-mobile/WordPress-Android, 3.2k stars), Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars), Appium (blokadaorg/blokada, 3.3k stars) and Phone Harness (ShawnPana/phone-harness, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Setup Test Stores?

woocommerce (a GitHub organization) maintains it in woocommerce/woocommerce-android, which has 319 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 9, 2026.

Source: woocommerce/woocommerce-android on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.