Skip to content
Back to skills

Fluentcart Products Inventory

ASecurity

Implements and audits FluentCart products, details, variations, pricing, custom attributes, taxonomies, downloadable flags, bundles, and stock movements. Use when creating or updating fluent-products records, calling ProductResource or ProductVariationResource, adding variation types, syncing product-categories or product-brands, reacting to product_updated, product_variations_changed, product_stock_changed, or preventing direct fct_product_* writes from desynchronizing inventory.

  • 22 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 5, 2026
ai-agentsgophpreactgitapidatabasedocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add Lonsdale201/wp-agent-skills --skill fluentcart-products-inventory --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fluentcart Products Inventory?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fluentcart Products Inventory
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lonsdale201-fluentcart-products-inventory/badge)](https://www.skillsdirectory.com/skills/lonsdale201-fluentcart-products-inventory)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fluentcart-products-inventory
description: >-
  Implements and audits FluentCart products, details, variations, pricing,
  custom attributes, taxonomies, downloadable flags, bundles, and stock
  movements. Use when creating or updating fluent-products records, calling
  ProductResource or ProductVariationResource, adding variation types, syncing
  product-categories or product-brands, reacting to product_updated,
  product_variations_changed, product_stock_changed, or preventing direct
  fct_product_* writes from desynchronizing inventory.
metadata:
  wp-skills-author: "Soczó Kristóf"
  wp-skills-contact: "mailto:lonsdale201@hotmail.com"
  wp-skills-plugin: "fluent-cart"
  wp-skills-plugin-version-tested: "1.6.0"
  wp-skills-wp-version-tested: "7.0.2"
  wp-skills-php-min: "7.4"
  wp-skills-last-updated: "2026-08-06"
---

# FluentCart products and inventory

Maintain the whole product aggregate: WordPress post, product detail, variants,
attribute relations, media/download data, tax/shipping configuration, and stock.

Read [product-contract.md](references/product-contract.md) before implementing a
writer, importer, bundle, custom variation type, or inventory sync.

## Understand the aggregate

- Product is a model over wp_posts and is globally scoped to post type
  fluent-products.
- ProductDetail and ProductVariation live in fct_product_details and
  fct_product_variations.
- Categories and brands are WP taxonomies product-categories and
  product-brands.
- Variant attributes use FluentCart's fct_attribute_* tables. Do not model them
  as WordPress terms.
- A variation ID is the purchasable object_id used by cart/order items. Do not
  substitute the parent product ID.
- Prices remain minor-unit values even though variation price columns and ORM
  casts are double.

## Write through coordinated APIs

Prefer ProductResource and ProductVariationResource for product-editor-like
mutations. Use Taxonomy for FluentCart taxonomy synchronization. Use native
WordPress post functions only when the change truly affects only post fields.

Do not create a complete product with wp_insert_post() alone. It leaves detail,
variation, pricing, and relationship rows absent. Do not update stock columns
independently; available, on_hold, committed, total_stock, stock_status, and the
product-level stock availability must stay coherent.

For batch import:

1. Normalize all amounts to integer minor units.
2. Create or map product posts.
3. create details and variants through Resource/service code;
4. map custom attributes separately from WP taxonomies;
5. attach downloads/media;
6. validate SKU uniqueness and purchasability;
7. dispatch or reproduce the normal product/variation change path;
8. verify counts and orphan rows after the batch.

## Observe the right event

| Need | Hook/event |
|---|---|
| General product save | fluent_cart/product_updated |
| Product editor variant save | fluent_cart/product/variants_updated |
| Variant set changed and default may be invalid | fluent_cart/product_variations_changed |
| Stock changed | fluent_cart/product_stock_changed |
| Extend supported variation types | fluent_cart/variation_types |
| Adjust data accepted during variant save | fluent_cart/product/variant_save_data |

Do not use a display/render hook as a durable catalog event. Scope callbacks by
post ID and make external synchronization replay-safe.

## Inventory rules

- Check ProductVariation::canPurchase() or the normal cart validation path
  before accepting a quantity.
- Honor sold_individually, manage_stock, backorders, item_status, parent publish
  status, and bundle-child availability.
- Let StockManagement react to order lifecycle events. It moves units between
  available, on_hold, and committed and records order meta stock_movement.
- Do not reduce stock again on order_paid if order_created already reserved it.
- Test status reversals, refunds, canceled/failed orders, physical delivery,
  digital orders, bundles, and repeated events.
- Feature-detect the stock_management module; its advanced behavior can be off.

## Query efficiently

- Eager-load detail and variants when rendering lists.
- Query product posts through Product/ProductResource, not WP_Query plus one
  custom query per row.
- Avoid hydrating every variant for ID/count-only jobs.
- Bound batch size and advance by a stable numeric ID for long-running work.
- Keep test/live reporting filters when product statistics join orders.

## Free/Pro boundary

The product, variant, custom attribute, stock, download, and recurring-plan base
models are Free in 1.6.0. Pro adds installments and promotional/order-bump
features; do not make all subscription-priced products or all promotions
Pro-only.

## Cross-references

- Use fluentcart-cart-checkout for purchasability and custom cart items.
- Use fluentcart-downloads-storage for downloadable files.
- Use fluentcart-shipping-tax for class and tax behavior.

## References

- Official model documentation: <https://dev.fluentcart.com/database/models/>
- Verified Free source paths:
  - fluent-cart/app/CPT/FluentProducts.php
  - fluent-cart/app/Models/Product.php
  - fluent-cart/app/Models/ProductDetail.php
  - fluent-cart/app/Models/ProductVariation.php
  - fluent-cart/api/Resource/ProductResource.php
  - fluent-cart/api/Resource/ProductVariationResource.php
  - fluent-cart/api/Taxonomy.php
  - fluent-cart/app/Modules/StockManagement/StockManagement.php
  - fluent-cart/app/Events/ProductVariationsChanged.php
  - fluent-cart/app/Events/StockChanged.php

Files in this skill

  • SKILL.md5.4 KB
  • agents/openai.yaml307 B
  • references/product-contract.md2.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…