Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
nimbleway avatar

Nimble Web Expert

  • 85 installs
  • 50 repo stars
  • Updated July 29, 2026
  • nimbleway/agent-skills

Helps with ai & agent building tasks.

About

nimble-web-expert is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • nimble-web-expert
  • AI & Agent Building
  • AI-coding skill

Nimble Web Expert by the numbers

  • 85 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #5,069 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nimbleway/agent-skills --skill nimble-web-expert

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs85
repo stars50
Last updatedJuly 29, 2026
Repositorynimbleway/agent-skills

What it does

Helps with ai & agent building tasks.

Files

references/nimble-agents/SKILL.mdMarkdownGitHub ↗

nimble agent — reference

Pre-built agents for specific sites. Always faster and more reliable than manual extraction — use them whenever a matching agent exists (see Step 0 in SKILL.md).

Table of Contents

---

1. List agents

Parameters:

ParameterCLI flagTypeDefaultDescription
limit--limitintResults per page
offset--offsetintPagination offset
search--searchstringSearch agents by domain, vertical, or name keyword
managed_by--managed-bystringFilter by attribution (e.g. nimble)
privacy--privacystringFilter by privacy level

CLI:

# All agents (broad lookup)
nimble agent list --limit 100

# Targeted search by domain or vertical (preferred when domain is known)
nimble agent list --limit 100 --search "amazon"
nimble agent list --limit 100 --search "ecommerce"
nimble agent list --limit 100 --search "jobs"

Python SDK:

from nimble_python import Nimble
nimble = Nimble(api_key=os.environ["NIMBLE_API_KEY"])

agents = nimble.agent.list()

Response fields per agent: name, display_name, description, vertical, entity_type, domain, is_public, managed_by

---

2. Get agent details (schema)

Parameters:

ParameterCLI flagTypeDescription
template_name--template-namestringAgent name (required)

CLI:

nimble agent get --template-name amazon_pdp

Python SDK:

agent = nimble.agent.get(template_name="amazon_pdp")

Response: same as list item + output_schema — JSON schema mapping field names to {type, description}.

---

3. Run agent (sync)

Parameters:

ParameterCLI flagTypeDefaultDescription
agent--agentstringrequiredAgent name
params--paramsJSONrequiredAgent input parameters
localization--localizationboolfalseEnable zip_code/store_id localization (agent-dependent)

CLI:

nimble agent run --agent amazon_pdp --params '{"asin": "B0CHWRXH8B"}'

Python SDK:

resp = nimble.agent.run(agent="amazon_pdp", params={"asin": "B0CHWRXH8B"})
parsing = resp.data.parsing  # dict for PDP agents, list for SERP agents

Response fields: task_id, status (success/failed), status_code, data.parsing, data.html, metadata.query_duration, metadata.agent

SERP parsing items are typed Pydantic objects — call .model_dump() before json.dumps() or ** spread. PDP parsing is a plain dict.

---

4. Run agent (async)

Parameters:

ParameterCLI flagTypeDefaultDescription
agent--agentstringrequiredAgent name
params--paramsJSONrequiredAgent input parameters
localization--localizationboolfalseEnable localization
callback_url--callback-urlstringPOST callback when task completes
storage_type--storage-typestrings3 or gs
storage_url--storage-urlstringDestination: s3://bucket/prefix/
compress--storage-compressboolfalseGzip the stored output
custom_name--storage-object-namestringCustom filename instead of task_id

CLI:

nimble agent run-async --agent amazon_pdp --params '{"asin": "B0CHWRXH8B"}' \
  --callback-url "https://your.server/callback"

Python SDK:

resp = await nimble.agent.run_async(agent="amazon_pdp", params={"asin": "B0CHWRXH8B"})
task_id = resp.task["id"]   # resp.task is a plain dict

Task states: pendingsuccess or error — poll and fetch results via nimble-tasks reference.

---

5. Run agent (batch)

Submit up to 1,000 agent requests in a single call. Uses an inputs + shared_inputs pattern — shared config applies to all items, per-item params override.

Parameters:

ParameterCLI flagTypeDefaultDescription
inputs--inputarrayrequiredArray of per-item inputs (up to 1,000)
shared_inputs--shared-inputsJSONrequiredShared config: agent (required) + default params

Each item in inputs contains a params object with agent-specific inputs (e.g. asin, keyword). Per-item params are merged with shared_inputs.params — per-item values take priority.

CLI:

nimble agent run-batch \
  --shared-inputs 'agent: amazon_serp' \
  --input '{"params": {"keyword": "iphone 15"}}' \
  --input '{"params": {"keyword": "iphone 16"}}' \
  --input '{"params": {"keyword": "iphone 16 pro"}}'

Python SDK:

resp = nimble.agent.batch(
    inputs=[
        {"params": {"keyword": "iphone 15"}},
        {"params": {"keyword": "iphone 16"}},
        {"params": {"keyword": "iphone 16 pro"}},
    ],
    shared_inputs={"agent": "amazon_serp"},
)
batch_id = resp["batch_id"]

Node SDK:

const resp = await nimble.agent.batch({
  inputs: [
    { params: { keyword: "iphone 15" } },
    { params: { keyword: "iphone 16" } },
    { params: { keyword: "iphone 16 pro" } },
  ],
  sharedInputs: { agent: "amazon_serp" },
});
const batchId = resp.batch_id;

Response:

{
  "batch_id": "b7e1a2f3-...",
  "batch_size": 3,
  "tasks": [
    { "id": "task-001-uuid", "state": "pending", "batch_id": "b7e1a2f3-..." }
  ]
}

Polling: Use nimble batches progress --batch-id <batch_id> to check completion, then nimble batches get --batch-id <batch_id> to get all task IDs, then nimble tasks results --task-id <id> for each successful task. See nimble-tasks reference for the full polling flow.

Delivery options:

  • Polling — check status with batch/task IDs (default)
  • Webhooks — pass callback_url in shared_inputs; Nimble POSTs on completion
  • Cloud storage — set storage_type + storage_url in shared_inputs

---

Response shapes

Agent typedata.parsing shapeNotes
PDP (product/profile/detail)flat dictAccess with .get("field")
SERP / listarray of objectsIterate items; call .model_dump() in SDK
Google Search{"entities": {"OrganicResult": [...], ...}}Nested entities dict

---

Known agents — baked-in table

Note: Agent names containing date and random suffixes (e.g. indeed_search_2026_02_23_vlgtrsgu) are Nimble-managed and may be updated. Always run nimble agent list --limit 100 to confirm current names before use.

E-commerce — US

SiteAgentKey param
Amazon product pageamazon_pdpasin
Amazon searchamazon_serpkeyword
Amazon best sellersamazon_best_sellers
Amazon categoryamazon_plp_(see schema)_
Walmart productwalmart_pdpproduct_id
Walmart searchwalmart_serpkeyword
Target producttarget_pdptcin
Target searchtarget_serpquery
Best Buy productbest_buy_pdpproduct_id
Home Depot producthomedepot_pdp_(see schema)_
Home Depot searchhomedepot_serp_(see schema)_
Sam's Club productsams_club_pdp_(see schema)_
Sam's Club searchsams_club_plp_(see schema)_
eBay searchebay_search_2026_02_23_pbgj8oft_(see schema)_
ASOS productasos_pdp_(see schema)_
ASOS searchasos_serp_(see schema)_
Kroger productkroger_pdp_(see schema)_
Kroger searchkroger_serp_(see schema)_
Foot Locker productfootlocker_pdp_(see schema)_
Staples productstaples_pdp_(see schema)_
Staples searchstaples_serp_(see schema)_
Office Depot productoffice_depot_pdp_(see schema)_
B&H searchb_and_h_serp_(see schema)_
Slickdealsslickdeals_pdp_(see schema)_

Food delivery

SiteAgent
DoorDash restaurantdoordash_pdp
DoorDash searchdoordash_serp
Uber Eats restaurantuber_eats_pdp
Uber Eats searchuber_eats_serp

Real estate

SiteAgentKey params
Zillow listingszillow_plpzip_code, listing_type (sales/rentals/sold)
Zillow propertyzillow_pdp_(see schema)_
Rightmove searchrightmove_search_2026_02_23_pxo1ccrm_(see schema)_

Jobs

SiteAgentKey params
Indeed searchindeed_search_2026_02_23_vlgtrsgulocation, search_term
ZipRecruiterziprecruiter_search_2026_02_23_8rtda7lg_(see schema)_

Search & maps

SiteAgentKey param
Google searchgoogle_searchquery
Google Maps searchgoogle_maps_searchquery
Google Maps reviewsgoogle_maps_reviewsplace_id
Yelp searchyelp_serpsearch_query, location (optional)

News & finance

SiteAgent
BBC articlebbc_info_2026_02_23_wexv71ke
BBC searchbbc_search_2026_02_23_t0gj94t2
The Guardian searchguardian_search_2026_02_23_nair7e5i
NYTimes searchnytimes_search_2026_02_23_4zleml8l
Bloomberg searchbloomberg_search_2026_02_23_a9u4p1tv
Yahoo Financeyahoo_finance_info_2026_02_23_fl3ij8ps
MarketWatchmarketwatch_info_2026_02_23_zpwkys0h
Morningstarmorningstar_search_2026_02_23_zicq0zdj
Polymarketpolymarket_prediction_data_2026_02_24_9zhwkle8

Social media

SiteAgent
Instagram postinstagram_post
Instagram profileinstagram_profile_by_account
Instagram reelinstagram_reel
TikTok accounttiktok_account
TikTok videotiktok_video_page
TikTok Shop producttiktok_shop_pdp
Facebook pagefacebook_page
Facebook profilefacebook_profile_about_section
YouTube Shortsyoutube_shorts
Pinterest searchpinterest_search_2026_02_23_kxzd5awh
Quora topicquora_info_2026_02_23_99baxvhr

Travel & LLM platforms

SiteAgent
Skyscanner flightsskyscanner_flights
ChatGPTchatgpt
Geminigemini
Grokgrok
Perplexityperplexity

---

Agent gallery

open -a "Google Chrome" "https://online.nimbleway.com/pipeline-gallery"
open -a "Google Chrome" "https://online.nimbleway.com/pipeline-gallery/amazon_pdp/overview"

---

Agent memory — save new agents

After a successful run, save to learned/examples.json so Step 0 matches faster next time:

python3 -c "
import json, pathlib, datetime
p = pathlib.Path.home() / '.claude/skills/nimble-web-expert/learned/examples.json'
data = json.loads(p.read_text()) if p.exists() else {'good': [], 'bad': [], 'agents': []}
data.setdefault('agents', [])
new_entry = {
    'agent_name': 'amazon_pdp',
    'tags': ['amazon', 'product', 'ecommerce', 'price', 'asin'],
    'params_example': {'asin': 'B0CHWRXH8B'},
    'last_used': str(datetime.date.today()),
    'notes': 'Returns price, title, rating, availability.'
}
if not any(a['agent_name'] == new_entry['agent_name'] for a in data['agents']):
    data['agents'].append(new_entry)
    p.write_text(json.dumps(data, indent=2))
    print('Saved.')
"

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.