agentsclimarketplace

Fluentcart dev

Skill ikamal7/fluentcart-dev

Build, extend, and customize FluentCart — the self-hosted WordPress e-commerce plugin. Use this skill whenever the user is writing PHP that hooks into FluentCart, building a custom payment gateway or add-on, querying FluentCart's database/models, calling its REST API, or asking about FluentCart action/filter hooks, order/subscription lifecycle, products, coupons, shipping, tax, or licensing. Trigger on mentions of FluentCart, `fluent_cart/*` hooks, `FluentCart\App\Models\*` classes, `fct_*` database tables, or `wp-json/fluent-cart/v2` endpoints, even if the user doesn't say "FluentCart docs" explicitly.From its SKILL.md

Install
npx -y skills add ikamal7/fluentcart-dev

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

FluentCart Developer

FluentCart is a self-hosted WordPress e-commerce plugin (an alternative to Easy Digital Downloads / WooCommerce with a modern Eloquent-style ORM). This skill turns https://dev.fluentcart.com into something you can act on: enough loaded up front to write correct code immediately, plus exact URLs to fetch when you need more.

The full docs are too large to bundle verbatim (315+ hooks, 367+ REST endpoints, 28 DB tables, ~30 models). What's bundled in references/ is the index — every table, model, hook category, and endpoint category, with real examples pulled straight from the live docs. When a task needs detail beyond what's here (the exact params for one hook, the full schema for one table, the request/response shape for one REST endpoint), WebFetch the specific URL named in the relevant reference file rather than guessing — these docs are precise about parameter names and hook signatures, and guessing wrong here means shipping code that silently never fires.

Picking the right layer

FluentCart exposes the same functionality through three layers. Pick based on where the code runs:

LayerUse whenReference
Hooks (fluent_cart/*)Reacting to or modifying behavior from a WordPress plugin/theme running alongside FluentCartreferences/hooks.md
Models & DB (FluentCart\App\Models\*, fct_* tables)Reading/writing data directly, reports, custom admin screensreferences/database.md
REST API (wp-json/fluent-cart/v2)External apps, headless frontends, mobile, third-party integrationsreferences/restapi.md

For "build a custom payment gateway" or other end-to-end workflows, start with references/tutorials.md — those tutorials already combine the layers above into a working pattern.

Core concepts to hold in your head

Orders are the center of the data model. Everything else (transactions, items, subscriptions, refunds, addresses) hangs off an order via foreign keys. When in doubt about where a piece of data lives, check references/database.md first.

Prefer order_paid_done over payment-gateway-specific hooks for integrations. It fires asynchronously via Action Scheduler after payment confirmation, outside the gateway's request/response cycle — the docs explicitly call this out as "the recommended hook for third-party integrations" because gateway-specific hooks can fire mid-request and are easy to get wrong (e.g. blocking a webhook response). Example:

add_action('fluent_cart/order_paid_done', function ($data) {
    // $data = ['order' => ..., 'transaction' => ..., 'customer' => ..., 'subscription' => ...]
    update_user_meta($data['customer']->user_id, 'membership_active', true);
}, 10, 1);

Dynamic status hooks follow the pattern fluent_cart/order_status_changed_to_{status} (e.g. ..._to_completed, ..._to_canceled). Don't hook the generic status-changed event and branch on $data['new_status'] if a dynamic hook for that exact status already exists — it's less code and it's what the docs model.

Models use a familiar Eloquent-style API::find(), ::where(), ->get(), relationships as properties ($order->customer, $order->items). If you know Laravel's Eloquent, you already know most of this; references/database.md has the relationship-type table (belongsTo/ hasMany/etc.) per model rather than prose, since that's the part that actually varies.

REST API auth depends on who's calling: WordPress Application Passwords (HTTP Basic Auth) for admin/server-to-server, cookie+nonce for the logged-in customer portal, no auth for public storefront endpoints. Get this wrong and you'll see 401s that look like a broken endpoint but are actually the wrong auth mode for that route — check references/restapi.md for which mode a given endpoint category expects.

Money is in cents, always. $10.00 is 1000 in every DB column and every REST payload. This is the single most common source of off-by-100x bugs when integrating.

Reference files

  • references/database.md — all tables, all models, relationship format, query builder examples, live URLs for full schema/model docs
  • references/hooks.md — all action + filter hook categories with URLs, plus verbatim examples of the most-used order hooks
  • references/restapi.md — auth model, base URL, conventions, endpoint categories with URLs, full example of one endpoint's documented shape
  • references/tutorials.md — the five built-in tutorials (custom payment gateway, fee system, ghost products, subscriptions, Paddle example) with what each covers and its URL

When you fetch a live page, use WebFetch with a prompt describing exactly what you need (a hook's parameters, an endpoint's request schema, a table's columns) — don't fetch the whole section index again, fetch the specific subpage named in the reference file.

What ships with it: 6 files

18.9 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.