Skip to content
Skillv1.0.0

manage-catalog

Use when: creating or managing a Monaiq product catalog, products, features, offerings, pricing tiers, and feature assignments after onboarding or monetization design.

by Sidub-Inc(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from Sidub-Inc/Monaiq.AI.Plugin2 (skills/manage-catalog/SKILL.md). Install upstream with npx skills add Sidub-Inc/Monaiq.AI.Plugin2 --skill manage-catalog. Copyright stays with the author.

<execution_context> Follows the skill layout and shared workflows in _shared/protocols.md. This skill contributes only catalog-specific decisions and product/product_feature/offering/feature_offering tool calls. </execution_context>

Output: catalogSpec: { productCode, features: [{ key, type, displayName }], offerings: [{ code, classification, baseRate, currency, interval }], assignments: [{ featureKey, offeringCode, accessLevel | rateLimit }] }, preserved route boundaries (activePlatform, targetProject, outOfScopePlatforms), plus catalogComplete: true after read-back verification. Downstream chain: manage-catalog -> implement-licensing -> implement-feature.

  • No products -> full creation flow.
  • Products exist, no features -> create features for existing product.
  • Products and features exist, no offerings -> create offerings.
  • Products, features, offerings exist but assignments are missing -> create assignments.
  • Everything exists -> show catalog summary and use utility workflows.

New Catalog Flow

Response Pattern. Follow _shared/protocols.md § Response Pattern. The gate this skill owns is catalog mutation. Evidence sources, in priority order: quickStartSpec from getting-started, pricingPlan from Discovery delegation (analyze-codebase + scenario-advisor + design-monetization), prior journal discoveredCapabilities, existing catalog state, conversation cues. Recommendation precedes evidence in every reply; never open with "what features does your product have?".

Interaction 1: starter product and features

Recommend a starter product (name + derived code) and feature set inferred from upstream evidence. Map binary capabilities to ProductAccessFeature, usage-counted capabilities to ProductRateLimitFeature; derive feature keys lowercase-hyphenated from the capability name. Present as the default; invoke the Host-Native Ask Pattern (see _shared/protocols.md § Host-Native Ask Pattern) with options: approve the starter catalog, refine features, refine the product name, or pause to inspect the source analysis. Block until the user responds.

Confirm via CHECKPOINT-PRE-CATALOG-MUTATION before any product / product_feature create call. Smart defaults: Product Status = Active, feature key derived from name.

Interaction 2: starter pricing

Ask how the user wants to charge, or use quickStartSpec.pricingChoice if provided. When asking, invoke the Host-Native Ask Pattern (see _shared/protocols.md § Host-Native Ask Pattern) with the pricing options listed below as option labels. Block until the user responds.

Present pricing options in plain language:

  • "Free trial + paid subscription" → Create a Trial offering (14 days, $0) + Subscription offering ($X/month)
  • "Just a subscription" → Create a Subscription offering ($X/month)
  • "One-time purchase" → Create a Perpetual offering ($X one-time)
  • "Free tier + paid tier" → Create a free Subscription ($0/month) + paid Subscription ($X/month)
  • "Usage-based" → Create a Subscription with usage limit values scaled per tier

For each pricing tier (called an Offering in Monaiq), apply smart defaults:

  • Currency: USD
  • Interval: 1 Month for Subscription, none for Perpetual, 14 days for Trial
  • Status: Draft (safe default — user publishes when ready)

[CONFIRM] Execute tool calls: offering (create for each tier) → feature_offering (assign features to each offering).

Default assignment values:

  • Paid tiers: All feature flags (ProductAccessFeature) set to Allowed, usage limits (ProductRateLimitFeature) at user-specified or suggested quotas

  • Free/Trial tiers: Feature flags selectively Allowed/Denied based on user description, usage limits at reduced quotas

  • Catalog identifiers (offering ids, product ids, feature keys) referenced in code MUST live in a constants module. Inline string literals are forbidden (D-30).

Required payload shape — feature_offering create for an access feature. ServiceAccessLevel is required; omitting it is rejected by the API. Always send it explicitly:

{
  "__sidub_entityType": "ProductFeatureOffering.ServiceAccess",
  "OfferingId": "<offering-id>",
  "FeatureKey": "<feature-key>",
  "ServiceAccessLevel": "Allowed"
}

For rate-limit features, both SampleSeconds and RateLimit are required (use matching "unlimited" strings or matching positive integers — asymmetric combinations are rejected).

Read-back verification (mandatory after any create/update of paid-tier assignments):

  1. Call feature_offering (list) for each paid offering.
  2. Assert every ProductFeatureOffering.ServiceAccess row has ServiceAccessLevel: "Allowed" (unless the user explicitly intended Denied for that tier).
  3. If any assignment shows ServiceAccessLevel: "Denied" that the user did not intend, stop and surface it to the user — this is the silent-failure mode where customers receive credentials but AssertLicense always returns false. Re-run feature_offering (update) with the correct level.

Utility Workflows

When state detection shows everything already exists, offer these options:

  • Update features: Add new features to existing product, modify feature key, change feature type
  • Modify offerings: Change pricing, update billing interval, change license type (e.g., promote Trial to Subscription — called LicenseClassification in Monaiq)
  • Modify assignments: Change feature values for a pricing tier — toggle access, adjust rate limits
  • Add tier: Create a new pricing tier (Offering) and assign features (common when adding a free or enterprise tier)
  • View catalog: Show full product → features → pricing tiers → feature assignments summary
Failure Point Symptom Recovery Action
Product creation fails Tool returns error on product create Retry once. If persistent, check session is authenticated via register_or_login.
Feature creation fails after product created product_feature returns validation error Product is safe — retry the feature creation with corrected input. List existing features first to avoid duplicates.
Offering creation fails after features created offering returns error Product and features are safe. Retry offering creation. Check that LicenseClassification is valid (Trial, Subscription, or Perpetual).
Feature assignment fails after offering created feature_offering returns error Offering exists but is incomplete. Retry assignment. Verify FeatureKey matches exactly and feature type matches assignment type (Access → ServiceAccessFeatureOffering, RateLimit → RateLimitFeatureOffering).
Partial catalog state Some entities created, process interrupted Re-run state detection — the skill will resume from the last incomplete step. Already-created entities are preserved.

All catalog operations are idempotent at the entity level — creating a product that already exists will return the existing entity. Feature assignments can be updated in place.

<success_criteria>

  • Product exists with features, offerings configured with pricing, all features assigned to offerings with correct values
  • Read-back verification passes
  • catalogSpec output-context populated for downstream skills </success_criteria>

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/sidub-inc-monaiq-ai-plugin2-manage-catalog/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

sidub-inc-monaiq-ai-plugin2-manage-catalog.ocm.jsonjson
{
  "ocm": "1",
  "id": "sidub-inc-monaiq-ai-plugin2-manage-catalog",
  "kind": "skill",
  "name": "manage-catalog",
  "description": "Use when: creating or managing a Monaiq product catalog, products, features, offerings, pricing tiers, and feature assignments after onboarding or monetization design.",
  "publisher": "Sidub-Inc",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "hr"
    ],
    "tags": [
      "skill-md",
      "catalog",
      "products",
      "features",
      "offerings",
      "orchestration",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Use when: creating or managing a Monaiq product catalog, products, features, offerings, pricing tiers, and feature assignments after onboarding or monetization design."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/Sidub-Inc/Monaiq.AI.Plugin2",
      "path": "skills/manage-catalog/SKILL.md",
      "ref": "57f658b3db8f1149beaf7379290a9284ba77bccd",
      "url": "https://github.com/Sidub-Inc/Monaiq.AI.Plugin2/blob/57f658b3db8f1149beaf7379290a9284ba77bccd/skills/manage-catalog/SKILL.md",
      "key": "Sidub-Inc/Monaiq.AI.Plugin2/skills/manage-catalog/SKILL.md"
    },
    "allowed_tools": [
      "register_or_login",
      "profile",
      "product",
      "product_feature",
      "offering",
      "feature_offering",
      "fetch_step_resources",
      "monaiq_journal",
      "mcp__plugin_monaiq_monaiq__register_or_login",
      "mcp__plugin_monaiq_monaiq__profile",
      "mcp__plugin_monaiq_monaiq__product",
      "mcp__plugin_monaiq_monaiq__product_feature",
      "mcp__plugin_monaiq_monaiq__offering",
      "mcp__plugin_monaiq_monaiq__feature_offering",
      "mcp__plugin_monaiq_monaiq__fetch_step_resources",
      "mcp__plugin_monaiq_monaiq__monaiq_journal"
    ]
  },
  "instructions": "<objective>\nCreate or update a Monaiq product catalog through evidence-backed recommendation, checkpointed mutation, and read-back verification. The skill owns product, feature, offering, and feature-assignment tool calls; it does not own SDK setup or app code changes.\n</objective>\n\n<monaiq-agent-handoff>\nFollow the Direct Invocation Contract in `_shared/protocols.md` (mutation-capable variant — catalog mutations require hard checkpoints).\n</monaiq-agent-handoff>\n\n<execution_context>\nFollows the skill layout and shared workflows in `_shared/protocols.md`. This skill contributes only catalog-sp",
  "cost": {
    "context_tokens": 2914
  }
}

Fetch it by URL: GET /api/v1/registry/sidub-inc-monaiq-ai-plugin2-manage-catalog/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.