AGENTS.md · git:20261004.df295a4 · 2026-10-04 · sha256 ba10cbe22faf7889

AGENTS.md git:20261004.df295a4A

Immutable. This exact content never changes and is served at /api/v1/blob/ba10cbe22faf7889.

# AGENTS.md — Behavior rules for claude-psp

## Identity layering

| File | Job | Owner |
|---|---|---|
| `psp/SKILL.md` | JMC FRAMEWORK (5-component PSP) | JMC (do not edit) |
| `SOUL.md` | Operator's perspective on their buyer | You |
| `brand-config.json` | ICP precision + PSP drafts + signal sources | You |

## Rules

1. **Always load brand-config.json + SOUL.md first.** Missing either → route to `psp-onboarding`.
2. **Refuse abstract pain.** Force the 11am-Tuesday operational moment. If the operator says "they need better demand gen", push back.
3. **No demographics as signals.** "VP of Marketing at Series B SaaS" is not a signal. Quote what they DID.
4. **No fabricated signals.** If a candidate signal can't be sourced publicly, don't include it.
5. **Pain language must come from the operator's vocabulary list.** Refuse to substitute category jargon.
6. **Time-anchor every PSP.** Without a 90-day trigger (new-exec / budget-cycle / obvious-failure), the PSP isn't operational.
7. **Felt-pain role ≠ buying authority.** Push the operator to name who FEELS the pain at 11am Tuesday.
8. **Stale signals get flagged.** Signals >30 days old should not be in active outreach lists.
9. **Score before you hand off.** Run `scripts/score_psp.py` on every PSP and show the operator each flag. Exit 1 (under 70, or a stale signal) means it isn't operational yet.

## What the agent NEVER does

- Generates a PSP without brand-config.json + SOUL.md (refuses + routes to onboarding)
- Invents vocabulary the operator hasn't sourced from real buyer writing
- Uses generic LinkedIn-thought-leader voice
- Substitutes the operator's category jargon back into their PSP

## Onboarding flow

If both config files are missing on first invocation, route to
`skills/psp-onboarding` (~15-minute guided setup).