🗝 KeyzHub
19Keys · community archive
5920 bytes raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# AGENTS.md — master-copywriter harness

This is the harness for the **master-copywriter** (Conversion Copywriting discipline). It turns
`MANUAL.md` (the deep knowledge) into a disciplined, gate-checked workspace for producing real
persuasion-surface deliverables — sales pages, VSL scripts, ad sets, email subject banks, landing
hero variants — one at a time, without drift, across sessions.

## Startup Workflow (every session, in order)

1. Read `progress.md` — the active deliverable, its current status, and the last verified state.
2. Read `feature_list.json` — the single source of truth for what's done, what's todo, and each
   feature's `verify` command.
3. Read `session-handoff.md` if present — it captures anything not obvious from the two files above.
4. Run `./init.sh`**the gate**. Never trust a prior "done" claim; re-run it. This proves the
   linter itself still discriminates good copy from bad copy before you trust it on new work.
5. Pick the **one** `in_progress` feature, or the first `todo` feature whose `dependencies` are all
   `done`. (All five deliverable-type features are independent capabilities — there is no forced
   build order between them — but never work two at once.)

## Working rules

- **One feature at a time.** Do not start a second deliverable type until the current one is `done`
  with evidence.
- **Stay in scope.** The unit of work is ONE surface — a page, a beat sheet, a variant set — never a
  funnel, never a send calendar, never the offer terms themselves. Funnel structure comes in from
  `funnel-psychology`; cadence and list mechanics go out to `email-marketing`. If a brief is missing
  the awareness/sophistication spec, **stop and request it** — do not guess (MANUAL.md §1.2, §3.1).
- **Build deliverables inside `workspace/`.** Every artifact the agent produces lives at
  `workspace/<feature-id>.md` (e.g. `workspace/sales-page.md`). Never edit `MANUAL.md`,
  `verify_copywriting.py`, or the `samples/` fixtures as part of doing feature work — those are the
  gate, not the deliverable.
- **Reference `MANUAL.md`, do not inline it.** The manual holds the science, the schools, the
  decision grid, and the §8 rubrics. Read it, cite it (the "Because:" rationale on hero variants must
  cite a named school from it), and write fresh copy — never paste manual text into a deliverable.
- **Voice gate on 19Keys-brand surfaces.** Before drafting a line for ZIION, Supermind, CWK, or
  HIGH LVL, load the `brand-bible` skill and enforce house register + forbidden vocabulary on top of
  the linter's local hype/vocab lists (MANUAL.md §5.4, §9.2).

## Definition of Done (per feature)

A feature is `done` only when ALL are true:

1. Its `verify` command in `feature_list.json` exits 0 against the workspace artifact.
2. `./init.sh` still passes end-to-end (the anti-theater gate still holds — no regressions).
3. `feature_list.json` is updated: `status: "done"` + a one-line `evidence` string (the literal
   command you ran and its result, e.g. `python3 verify_copywriting.py sales-page workspace/sales-page.md → RESULT: PASS (19 checks passed)`).
4. `progress.md` "Last verified" line is updated.

**No evidence = NOT done.** If the verify command fails, leave the feature `in_progress` and write
the specific failing check names in `progress.md` — not a vague "needs work."

## End of Session routine

1. Update `feature_list.json` status/evidence for anything touched this session.
2. Update `progress.md`: active feature, last verified command + result, next step.
3. Write/refresh `session-handoff.md` with anything the next session needs that isn't obvious from
   the two files above (blockers, half-finished drafts, brief gaps waiting on funnel-psychology).
4. Leave `workspace/` in a runnable state — a half-built deliverable should be clearly `in_progress`
   in `feature_list.json`, not silently abandoned.

## Producing a deliverable (operating sequence)

This is the sequence MANUAL.md Appendix A compresses into ten steps. Apply it to whichever feature
is active:

1. **Locate** the prospect on Awareness × Sophistication (Schwartz, MANUAL.md §3.1). This must come
   from the brief (funnel-psychology) — if missing, stop and ask.
2. **Select the lead type** keyed to awareness (Masterson/Forde's six — MANUAL.md §3.1, §6.5).
3. **Pick a playbook** from `playbooks/` that matches the awareness/sophistication/channel
   combination (MANUAL.md §5.2 has the full decision table).
4. **Draft** to the deliverable's required structure (MANUAL.md §3.2/§3.3 for sales-page/VSL; §8 for
   the exact machine-checkable shape of all five types).
5. **Attach proof to every claim carrying a number** — tag it `[testimonial|data|demo|authority|story]`
   or cut the number. This is the single hardest gate and the most common reason a draft fails.
6. **Self-score before running the linter**: Flesch Reading Ease, banned vocabulary, paragraph
   length, em-dash density, single CTA, lead/awareness tags present and consistent (MANUAL.md §7.1,
   §8.6).
7. **Run the feature's `verify` command.** Fix named failures, not vibes — the linter prints exactly
   which check failed.
8. **Run `./init.sh`** to confirm the gate itself still holds, then mark the feature done with
   evidence.

## Hard lines (non-negotiable, mirrors MANUAL.md §8.7)

- Never fabricate a proof element (a testimonial, a stat, a case) that doesn't exist. Untagged or
  invented numbers are the #1 way practitioners fake competence — the linter catches untagged ones;
  fabricated-but-tagged ones are a human/editorial integrity failure the linter cannot catch, and are
  never acceptable.
- Never guess the awareness/sophistication stage when the brief doesn't supply it.
- Never ship more than one distinct CTA target on a single surface.
- Never inline MANUAL.md content into a deliverable — cite it, don't paste it.