skills/price-change/SKILL.md
Change InboxMate pricing, features, or campaign coupons across all touchpoints (website, app, docs, terms, Stripe, demo page). Guides through the full process with audit, approval, and coordinated push.
npx skillsauth add psquared-development/psquared-skills price-changeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Announce to the user at the very start:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ InboxMate Price Change Pipeline started. First I'll audit all current pricing sources, then walk you through the change. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ask the user before doing anything else:
What type of change is this?
Which tiers are affected? (Starter / Pro / Business / All)
Wait for the user's answer before proceeding.
Announce:
[1/5] Auditing current pricing across all sources...
Read ALL of the following files and extract current pricing data into a summary table. Do not skip any source. This is the single source of truth audit.
| Source | File | What to extract |
|--------|------|-----------------|
| Stripe config | /Users/martinpammesberger/Documents/psquared/agenthub/server/utils/subscriptionUtils.ts | Monthly price IDs, yearly price IDs, tier limits (maxUsers, maxAgents, maxChats, etc.), feature flags, coupon references |
| Stripe live | Use Stripe MCP list_prices for each product | Actual live prices, verify they match config |
| App pricing modal | /Users/martinpammesberger/Documents/psquared/agenthub/app/components/InboxMatePricingModal.vue | Displayed monthly/yearly prices, demo prices, discount labels, feature lists per tier, highlight features |
| Stripe checkout | /Users/martinpammesberger/Documents/psquared/agenthub/server/services/subscription/StripeService.ts | Coupon logic (search for DEMO_COUPONS), which env vars are used |
| Website landing | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/inboxmate/index.html | Displayed prices (data-price-monthly, data-price-annual), feature lists per tier card, savings notes |
| Website i18n | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/inboxmate/i18n.js | Price strings in EN and DE, FAQ price references |
| Demo page | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/demo-inboxmate/index.html | Demo offer prices per tier, crossed-out prices, discount labels |
| Terms (AGB) | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/inboxmate/agb.html | Section 4 pricing, annual discount description, promotional clause |
| Help center | /Users/martinpammesberger/Documents/psquared/inboxmate-docs/user-guide/workspace/usage-and-billing.mdx | Pricing table (monthly, annual, limits, features) |
| Comparison pages | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/inboxmate/vs-intercom.html and vs-chatbase.html | Any hardcoded price references |
| Insight articles | /Users/martinpammesberger/Documents/psquared/psquared-websites/apps/inboxmate/insights/*.html | Any hardcoded price references |
| Env example | /Users/martinpammesberger/Documents/psquared/agenthub/.env.example | Coupon env var names |
┌─────────────────────────────────────────────────────────┐
│ CURRENT PRICING AUDIT │
├──────────────────┬──────────┬──────────┬────────────────┤
│ │ Starter │ Pro │ Business │
├──────────────────┼──────────┼──────────┼────────────────┤
│ Monthly │ €__/mo │ €__/mo │ €__/mo │
│ Yearly (std) │ €__/mo │ €__/mo │ €__/mo │
│ Demo 1st year │ €__/mo │ €__/mo │ €__/mo │
│ Yearly discount │ __% │ __% │ __% │
│ Demo discount │ — │ __% │ __% │
├──────────────────┼──────────┼──────────┼────────────────┤
│ Stripe monthly │ price_.. │ price_.. │ price_.. │
│ Stripe yearly │ price_.. │ price_.. │ price_.. │
│ Demo coupon │ — │ coupon.. │ coupon.. │
├──────────────────┼──────────┼──────────┼────────────────┤
│ Max users │ __ │ __ │ __ │
│ Max agents │ __ │ __ │ __ │
│ Max chats/mo │ __ │ __ │ __ │
│ Tool calls/mo │ __ │ __ │ __ │
│ [other limits] │ ... │ ... │ ... │
├──────────────────┼──────────┼──────────┼────────────────┤
│ Key features │ list │ list │ list │
└──────────────────┴──────────┴──────────┴────────────────┘
Flag any inconsistencies between sources (e.g., website shows €X but Stripe has €Y). These must be resolved before proceeding.
Announce:
[2/5] Planning changes...
Based on the user's request and the audit:
monthly × 10 / 12 (round to nearest euro)displayed_monthly × 12 (in cents)standard_yearly - demo_yearly (in cents)Show which features move between tiers
Generate a constraints report listing files in the agenthub repo where feature enforcement happens:
| Feature | Config location | UI gating location | Notes |
|---------|----------------|-------------------|-------|
| removeBranding | subscriptionUtils.ts → INBOXMATE_TIERS[tier].features.removeBranding | Check components that read this flag | |
| humanHandover | subscriptionUtils.ts → INBOXMATE_TIERS[tier].features.humanHandover | ... | |
| tools | subscriptionUtils.ts → INBOXMATE_TIERS[tier].features.tools | ... | |
| etc. | | | |
Search for these patterns to find UI gating:
grep -r "humanHandover\|removeBranding\|tools\|apiAccess\|whitelabel\|contacts\|gdprMode\|scheduledTasks\|triageEnabled\|emailAutoReply\|ticketManagement\|slackEnabled\|whatsappEnabled\|mcpEnabled" app/ server/
Report which files need changes and what the change would be. Do not make these changes yet — present the report for approval.
┌─────────────────────────────────────────────────────────┐
│ PROPOSED CHANGES │
├──────────────────┬──────────────────┬────────────────────┤
│ Source │ Current │ New │
├──────────────────┼──────────────────┼────────────────────┤
│ [file/location] │ [old value] │ [new value] │
│ ... │ ... │ ... │
└──────────────────┴──────────────────┴────────────────────┘
Wait for user approval before proceeding.
Announce:
[3/5] Applying changes across all sources...
Only proceed after explicit user approval.
Apply changes in this order:
create_price) — yearly prices are interval: yearcreate_coupon) — use amount_off in cents, currency: eur, duration: onceagenthub/server/utils/subscriptionUtils.ts — update price IDs, tier limits, feature flagsagenthub/server/services/subscription/StripeService.ts — update coupon env var names if changedagenthub/.env.example — update coupon env var documentationagenthub/app/components/InboxMatePricingModal.vue — update prices, features, discount labels, highlight featurespsquared-websites/apps/inboxmate/index.html — pricing cards (data-price attributes, feature lists, savings notes)psquared-websites/apps/inboxmate/i18n.js — EN and DE price strings, FAQ referencespsquared-websites/apps/demo-inboxmate/index.html — demo offer pricespsquared-websites/apps/inboxmate/agb.html — Section 4 pricing, promotional clausepsquared-websites/apps/inboxmate/vs-intercom.html — price referencespsquared-websites/apps/inboxmate/vs-chatbase.html — price referencespsquared-websites/apps/inboxmate/insights/intercom-alternatives.html — price referencespsquared-websites/apps/inboxmate/insights/chatbase-alternatives.html — price referencesinboxmate-docs/user-guide/workspace/usage-and-billing.mdx — pricing tablepsquared-skills/skills/analyse-inboxmate/SKILL.md — pricing tiers reference tableDo NOT commit or push yet.
Announce:
[4/5] Verifying all changes...
Grep for old prices across all three repos to catch stragglers:
grep -r "€OLD_PRICE" psquared-websites/apps/inboxmate/ agenthub/app/ agenthub/server/ inboxmate-docs/
Show a final diff summary across all repos:
cd psquared-websites && git diff --stat
cd agenthub && git diff --stat
cd inboxmate-docs && git diff --stat
Present the verification report to the user.
Wait for final approval before pushing.
Announce:
[5/5] Committing and pushing all changes...
Only after explicit "push it" or equivalent approval.
Push all repos at once:
# 1. psquared-websites
cd /Users/martinpammesberger/Documents/psquared/psquared-websites
git add [changed files]
git commit -m "feat: [description of price/feature change]"
git push origin main
# 2. agenthub
cd /Users/martinpammesberger/Documents/psquared/agenthub
git add [changed files]
git commit -m "feat: [description of price/feature change]"
git push origin main
# 3. inboxmate-docs (auto-deploys via Mintlify)
cd /Users/martinpammesberger/Documents/psquared/inboxmate-docs
git add [changed files]
git commit -m "feat: [description of price/feature change]"
git push origin main
Announce:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ All changes pushed to main across 3 repos. Deployment checklist: □ Set env vars on agenthub deployment (if new coupons) □ Create DEV Stripe prices manually (MCP is prod-only) □ Verify inboxmate.psquared.dev after Dokploy deploy □ Verify docs.inboxmate.psquared.dev (Mintlify auto-deploy) □ Verify app.psquared.dev pricing modal ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Repo | Path | Branch | Auto-deploy |
|------|------|--------|-------------|
| agenthub | /Users/martinpammesberger/Documents/psquared/agenthub | main | No (manual) |
| psquared-websites | /Users/martinpammesberger/Documents/psquared/psquared-websites | main | Dokploy |
| inboxmate-docs | /Users/martinpammesberger/Documents/psquared/inboxmate-docs | main | Mintlify (auto) |
| Environment | Account | Access |
|-------------|---------|--------|
| Production | acct_1PeH7A2MM5yLq2OK (psquared GmbH) | Via Stripe MCP |
| Development | acct_*Ro4DnEindd* | Manual (Stripe dashboard) |
Set on agenthub deployment:
NUXT_STRIPE_INBOXMATE_DEMO_COUPON_PRO=<coupon_id>
NUXT_STRIPE_INBOXMATE_DEMO_COUPON_BUSINESS=<coupon_id>
tools
Set up a personalized InboxMate INBOX demo (Demo-Postfach) for a sales prospect: a public, read-only seeded inbox showing 5-7 pre-triaged emails in their industry's language, with categories, routing and ready AI drafts. Use for email-automation outreach (the €49-349 product), NOT for chatbot outreach. No agent is created.
development
Build InboxMate demos AND write personalised outreach drafts in a single pass per company — eliminating the double-research that happens when /inboxmate-batch-demo and /setup-email-drafts run separately. Use when kicking off a new campaign where the campaign already exists (plan via /plan-campaign first). For each target company, dispatches ONE subagent that researches the site, builds the demo, creates the CRM opportunity, and drafts the outreach email — reusing the same research across all three. After all subagents return, runs a single batch call to auto-generate follow-ups.
testing
Autonomous pilot for the InboxMate EMAIL outreach (Demo-Postfach/INBOX track). Assesses where the inbox pipeline stands (leads → demos → review → campaign → drafts) and executes the next sensible step end-to-end, always finishing with the inbox sanity check and a summary of what the user should do next (ideally: just schedule the mails). Runs in save mode by default: orchestration + all quality gates on the top model, data collection on haiku subagents, content generation on sonnet subagents (pass 'full' to disable). Use when asked to 'advance the email outreach', 'run the inbox pipeline', or 'what's next for the Demo-Postfach motion'.
tools
Generate a polished psquared client offer as a multi-page PDF (title, project description, screenshots, Angebot/pricing, AGB). Walks the user through gathering inputs (or accepts a JSON config), renders branded HTML templates with Playwright in two passes (title page edge-to-edge + body pages with margins and pagination), then merges with pdf-lib.