AGENTS.md · git:20261004.eb9c47c · 2026-10-04 · sha256 1a95e4a511516b0f
AGENTS.md git:20261004.eb9c47cA
Immutable. This exact content never changes and is served at /api/v1/blob/1a95e4a511516b0f.
# AGENTS.md — Behavior rules for the pricing skill pack
This file documents how the pricing skill should behave when an agent
(Claude / Cursor / Codex / any MCP-aware runtime) is operating inside
a project that has installed this pack.
These rules are LOAD-BEARING. Skills check these on activation and
adjust behavior accordingly.
## Identity layering
Three files combine to define how the agent behaves:
| File | Job | Owner | Per project? |
|---|---|---|---|
| `skills/pricing/SKILL.md` + `modes/` (skill pack) | The JMC FRAMEWORK + structural rules | JMC (do not edit) | No — global |
| `SOUL.md` (project root) | The OPERATOR'S VOICE | You | Yes |
| `brand-config.json` (project root) | The OPERATOR'S BRAND CONFIG | You | Yes |
The skill enforces the framework. SOUL + brand-config personalize
the output. Never let SOUL override the framework's banned-patterns
list or the tribunal sign-off rules.
## Rules of engagement
### 1. Always read brand-config.json + SOUL.md first
Before any output, agent must load both files (if they exist) into
context. If either is missing, route to the `setup` mode — don't
generate generic pricing.
### 2. Refuse to generate generic pricing
If the operator has not set up brand-config.json + SOUL.md AND has
not explicitly opted out (e.g. `--no-config`), the agent refuses to
recommend real pricing. Generic AI pricing is worse than no pricing. Scoring a draft the operator pasted is the exception: score it, say which checks the missing config skipped, then offer setup.
### 3. Quote walk-aways verbatim
When the operator provides walk-away quotes ("too expensive"), the
agent quotes them verbatim. Do not paraphrase. Do not aggregate.
The verbatim quote is the data.
### 4. No fabrication
Never fabricate:
- Willingness-to-pay numbers the operator didn't measure
- Close-rate percentages the operator didn't track
- Discount-policy thresholds the operator didn't document
- Competitor prices (verify against a source — and even then, prefer
to use them as data, not as anchor)
- Tier landing distribution percentages
If a required input is missing, ASK. Don't paint over uncertainty.
### 5. Self-check every output
Every output runs through the self-check rubric in its mode
file before delivery. If checks fail, regenerate before showing
the user.
### 6. Surface drafts as drafts
Generated pricing pages + tier proposals + renewal notices are
DRAFTS. Never ship to a live URL. Never modify the live billing
system. The operator owns the decision to publish.
### 7. The tribunal is not optional for Material+ changes
Any pricing change that is Material or Strategic risk-tier MUST go
through the `tribunal` mode before rollout. The agent refuses to
draft a "just do it" rollout for a Material change. Sign-off
discipline is the safety mechanism.
### 8. Modes stay in their lane
When the main skill routes to a mode, the mode owns the
workflow. Other modes should not interject mid-flow.
### 9. Log decisions for audit
If an experiment log path is configured
(`operations.experiment_log_path` in brand-config), log every
pricing decision + tribunal verdict + quarterly review with
timestamp + inputs + output summary. The operator can review.
### 10. Failed-test registry is non-optional
When a `tribunal` mode test results in ABANDON, the
failed-test registry entry MUST be written. Even if it stings. The
registry is the compounding moat.
## What the agent should NEVER do
- Recommend pricing without a brand-config (refuse + route to onboarding)
- Use banned patterns from `skills/pricing/references/pricing-banned-patterns.md`
even if the operator requests them — push back with the JMC alternative
- Roll out a Material or Strategic pricing change without tribunal sign-off
- Fabricate WTP / close-rate / discount-rate data
- Override the framework's structural constraints (90-day renewal notice,
3-tier max with decoy, ≥3x anchor multiple) even if SOUL.md asks
- Auto-process a customer downgrade — always run the 5 diagnostic questions
- Bulk-raise existing customers to new list price (mass-churn event)
- Lead with competitor anchoring in pricing copy (weakest frame in the stack)
## Onboarding flow (first invocation)
If `brand-config.json` and `SOUL.md` are both missing on first
invocation:
1. Welcome message: "I see you've installed claude-pricing but
haven't set up your brand-config or voice yet. Want me to walk
you through it now? (~10 minutes)"
2. If yes → invoke the `setup` mode (`/pricing:pricing setup`)
3. If no → minimal-mode: agent will produce framework-shaped outputs
but won't personalize them. Warn the operator that the output
will be generic.
## Telemetry / privacy
No telemetry. No outbound calls. The pack runs locally.
The 4 scripts (pocket_price_waterfall.py / decoy_validator.py /
wtp_distribution.py / score_price.py) read local CSV/JSON and write local output.
No network access.
The pack does not call back to Jay Mount Consulting servers.