Help us improve
Share bugs, ideas, or general feedback.
From bigcommerce-commerce
Writes modern JavaScript/TypeScript using ES6+ features (async/await, destructuring, modules, optional chaining), Fetch API, and TypeScript types/utilities. For BigCommerce themes, apps, storefronts.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin bigcommerce-commerceHow this skill is triggered — by the user, by Claude, or both
Slash command
/bigcommerce-commerce:js-modernThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Fetch live docs**: Web-search `site:developer.mozilla.org javascript` for MDN JavaScript reference. Check `https://www.typescriptlang.org/docs/` for TypeScript documentation.
Guides modern JavaScript/TypeScript with ES6+ features, async/await, destructuring, optional chaining, modules, and TypeScript types for Shopify themes, apps, Functions, Hydrogen.
Writes modern JS/TS for Salesforce Commerce platforms (SFCC Rhino/CommonJS limits, PWA Kit Node/ES modules, LWC Locker constraints). Fetches latest docs before coding.
Provides TypeScript configs, utility types, discriminated unions, modern JS patterns like optional chaining, React hooks/props, and Node.js ES modules/error handling.
Share bugs, ideas, or general feedback.
Fetch live docs: Web-search site:developer.mozilla.org javascript for MDN JavaScript reference. Check https://www.typescriptlang.org/docs/ for TypeScript documentation.
Concise function syntax with lexical this:
const add = (a, b) => a + b;this, arguments, super, or new.targetString interpolation and multi-line strings:
`Hello, ${name}!`Extract values from objects/arrays:
const { name, price } = product;const [first, ...rest] = items;const { name = 'Unknown' } = product;const { address: { city } } = customer;[...arr1, ...arr2], { ...obj1, ...obj2 }function(...args) {}, const { a, ...rest } = obj;import { func } from './module.js';export const value = 42; / export default class {}const mod = await import('./lazy.js');obj?.property?.nested — short-circuits to undefined if any part is nullishvalue ?? defaultValue — returns right side only if left is null/undefined (not falsy)new Promise((resolve, reject) => { ... }).then(), .catch(), .finally()Promise.all(), Promise.allSettled(), Promise.race(), Promise.any()async function fetchData() { const data = await fetch(url); }const [a, b] = await Promise.all([fetchA(), fetchB()]);const response = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
const result = await response.json();
let name: string = 'Product';function getPrice(id: number): Promise<number> { ... }const product: Product = { ... };interface Product {
id: number;
name: string;
price: number;
variants?: Variant[];
}
Partial<T> — all properties optionalRequired<T> — all properties requiredPick<T, K> — subset of propertiesOmit<T, K> — exclude propertiesRecord<K, V> — key-value mappingReturnType<T> — extract return type of functionfunction fetchResource<T>(url: string): Promise<T> {
return fetch(url).then(res => res.json());
}
const product = await fetchResource<Product>('/api/products/1');
enum OrderStatus {
Pending = 'pending',
Shipped = 'shipped',
Completed = 'completed',
}
type ApiResponse<T> =
| { status: 'success'; data: T }
| { status: 'error'; message: string };
map, filter, reduce, find, findIndexsome, every — boolean checksflat, flatMap — array flatteningArray.from(), Array.isArray()Object.entries(), Object.fromEntries(), Object.keys(), Object.values()structuredClone() — deep clonePageManager lifecycle for page-specific codethis.contextjsonwebtoken libraryconst by default, let when reassignment is needed, never var=== instead of == for comparisonsFetch MDN and TypeScript docs for exact syntax, browser compatibility, and new features before implementing.