From openclix
Designs OpenClix campaign configurations from product goals and app events, producing schema-valid openclix-config.json, app profiles, and runtime integration setup for notifications and retention flows.
npx claudepluginhub openclix/openclix --plugin openclixThis skill uses the workspace's default tool permissions.
Turn campaign goals into schema-valid OpenClix config JSON with minimal ambiguity.
Sets up OpenClix in mobile apps by detecting platform (Expo, React Native, Flutter, iOS, Android), copying templates to namespace, wiring init/event/lifecycle touchpoints, and verifying build.
Orchestrates marketing campaign lifecycle including planning, budget allocation, channel optimization, UTM tracking, media plans, launch, management, and post-mortems.
Plans launches for developer tools, APIs, SDKs via tier assessment, plan generation, readiness checks, and checklists for docs, code assets, DX.
Share bugs, ideas, or general feedback.
Turn campaign goals into schema-valid OpenClix config JSON with minimal ambiguity. Keep outputs auditable and compatible with the OpenClix runtime contract. When the user asks for implementation, install the final config JSON into app resources and wire runtime initialization code.
Follow these phases in order.
Repository hygiene rule:
.openclix/**, ensure .openclix/ is listed in .gitignore (add it if missing).Gather only missing facts needed for design decisions:
If the user already provided enough detail, do not re-ask resolved points.
Before authoring campaigns:
references/json-schemas.md.references/schemas/app-profile.schema.json..openclix/campaigns/app-profile.json.Before drafting campaigns:
references/openclix-campaign-playbook.md.Design 3-5 campaigns unless the user requests a different count. Spread campaigns across lifecycle stages or explicit user priorities.
OpenClix modeling rule:
onboarding-step-1, onboarding-step-2, onboarding-step-3).Trigger selection rule:
event for behavior-driven messaging.scheduled for one-time date/time delivery.recurring for repeated cadence.Suppression and cancellation rule:
delay_seconds + cancel_event for pending enrollment cancellation when behavior can invalidate intent.settings.do_not_disturb and settings.frequency_cap when needed.Content rule:
{{key}} syntax.Feature coverage rule (mandatory when adding a new campaign):
references/schemas/openclix.schema.json and explicitly evaluate each configurable lever:
settings.frequency_cap, settings.do_not_disturbfrequency_capdelay_seconds, cancel_eventstart_at, end_at, rule.interval, weekly_rule.days_of_week, time_of_dayimage_url, landing_url, personalization placeholdersBefore writing config:
references/schemas/openclix.schema.json.Write updates in this order:
.openclix/campaigns/openclix-config.json.Remote delivery note:
https://openclix.ai/schemas/openclix.schema.json.Guarantee these invariants:
"$schema" is exactly https://openclix.ai/schemas/openclix.schema.json.schema_version is exactly openclix/config/v1.config_version is explicit and traceable.type is campaign.status is running or paused.When editing existing config, keep diffs minimal and preserve unrelated campaigns.
Validation is mandatory. Fix all failures before proceeding to delivery.
Primary path (inside the openclix repo):
./scripts/validate_config.sh <config-file>This runs JSON syntax, ajv-cli schema validation (--spec=draft2020), and structural spot-checks in one pass. All checks must pass.
Fallback path (outside the repo or when the script is unavailable):
jq . <config-file> — verify JSON syntax.ajv:
openclix repo (schema checked out locally):
npx --yes -p ajv-cli@5.0.0 -p ajv-formats@3.0.1 ajv validate --spec=draft2020 -c ajv-formats -s ./references/schemas/openclix.schema.json -d <config-file>npx --yes -p ajv-cli@5.0.0 -p ajv-formats@3.0.1 ajv validate --spec=draft2020 -c ajv-formats -s https://openclix.ai/schemas/openclix.schema.json -d <config-file>$schema is https://openclix.ai/schemas/openclix.schema.json, schema_version is openclix/config/v1, campaign keys are kebab-case, every campaign has type: "campaign", and each trigger.type value has its matching sub-object key.Validate app profile artifacts against either the local or published schema:
openclix repo): references/schemas/app-profile.schema.jsonhttps://openclix.ai/schemas/app-profile.schema.jsonnpx --yes -p ajv-cli@5.0.0 -p ajv-formats@3.0.1 ajv validate --spec=draft2020 -c ajv-formats -s ./references/schemas/app-profile.schema.json -d <app-profile-file>npx --yes -p ajv-cli@5.0.0 -p ajv-formats@3.0.1 ajv validate --spec=draft2020 -c ajv-formats -s https://openclix.ai/schemas/app-profile.schema.json -d <app-profile-file>Report at handoff:
After generating config JSON, inspect existing OpenClix integration code before delivery decisions.
Inspection checklist:
OpenClix.initialize(...) call sites and current OpenClixConfig.endpoint usage.OpenClixCampaignManager.replaceConfig(...) usage.openclix-init first and use its detected platform/startup/resource conventions.Decision gate (mandatory unless user already specified mode):
When the user chooses bundle mode:
openclix-init outputs.assets/openclix/openclix-config.jsonassets/openclix/openclix-config.json (and register it in pubspec.yaml)<app-target>/OpenClix/openclix-config.json (add to Copy Bundle Resources)app/src/main/assets/openclix/openclix-config.json.openclix/campaigns/openclix-config.json to that resolved runtime path.openclix-config.json unless the project already has a different runtime filename and loader reference.OpenClixConfig.endpoint to the same bundled path identifier used by the runtime loader.Config, then call OpenClixCampaignManager.replaceConfig(...) after initialization.OpenClixConfig.endpoint identifier must all match.When the user chooses HTTP mode:
.openclix/campaigns/openclix-config.json to that environment.OpenClixConfig.endpoint to the deployed HTTPS URL.Critical runtime note:
OpenClix.initialize(...) auto-fetches config only for HTTP(S) endpoints.OpenClixCampaignManager.replaceConfig(...) after initialization.Completion requirements for implementation tasks:
OpenClixConfig.endpoint value/location updated and reportedfield: "name" and field: "property") over vague matching.connector: "and"; use or only with explicit rationale.weekly_rule.days_of_week whenever recurrence type is weekly.openclix-init when selecting resource path and startup patch points.openclix-config.json unless an existing runtime loader already requires another exact filename.OpenClix.initialize(...).OpenClixConfig.endpoint to the chosen bundled path and wire explicit resource load + OpenClixCampaignManager.replaceConfig(...).OpenClixConfig.endpoint to HTTPS URL and keep the payload schema-compatible with openclix/config/v1.references/json-schemas.md: planning + config structures and examples.references/openclix-campaign-playbook.md: trigger strategy and campaign decomposition.references/schemas/app-profile.schema.json: app profile schema.references/schemas/openclix.schema.json: canonical OpenClix schema used by this skill.