@veleads/gtm 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +13 -2
- package/dist/cli.js +1080 -267
- package/kit/AGENTS.md +34 -15
- package/kit/guides/github.md +60 -0
- package/kit/schemas/campaign-config.schema.json +30 -0
- package/kit/schemas/icp.schema.json +97 -8
- package/kit/schemas/project.schema.json +24 -3
- package/kit/skills/00-intake/SKILL.md +31 -15
- package/kit/skills/01-icp/SKILL.md +88 -33
- package/kit/skills/02-tam/SKILL.md +11 -7
- package/kit/skills/05-copy/SKILL.md +9 -3
- package/kit/skills/07-launch/SKILL.md +1 -1
- package/kit/skills/research/SKILL.md +62 -0
- package/kit/templates/campaign/config.yaml +3 -0
- package/kit/templates/project/icp.md +44 -8
- package/kit/templates/project/icp.yaml +13 -4
- package/kit/templates/project/intake.md +26 -11
- package/kit/templates/project/project.yaml +8 -4
- package/kit/templates/project/research.md +45 -0
- package/kit/templates/repo/README.md +4 -0
- package/kit/templates/repo/github/workflows/gtm.yml +5 -2
- package/package.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,38 @@ All notable changes to `@veleads/gtm`. Each entry is tagged: **no action**, **op
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.6.0] - 2026-10-24
|
|
9
|
+
- **no action** Layered ICP: `context/icp.yaml` can have an optional `core.firmographics` that every
|
|
10
|
+
segment shares; segments then hold only what differs, and a segment field **replaces** the same core
|
|
11
|
+
field (lists are not combined). Segments may restrict `personas`. Existing ICPs are unchanged and
|
|
12
|
+
stay valid. A segment that resolves to no filters at all is rejected.
|
|
13
|
+
- **no action** `gtm icp` shows the ICP as jobs see it: core, each segment's final filters (marking
|
|
14
|
+
which fields the segment sets), personas and exclusions. `gtm job tam` uses the resolved filters.
|
|
15
|
+
- **no action** `01-icp` skill and `icp.md` / `icp.yaml` templates rewritten around the five layers
|
|
16
|
+
(core, segments, personas, signals, exclusions) with a hypothesis, evidence and success criteria per
|
|
17
|
+
segment; `research` now outputs core and segment candidates. AGENTS.md states the assumption: from
|
|
18
|
+
stage 2 on the ICP is approved (stage 1 ends with a decision, revising later is normal).
|
|
19
|
+
- **opt-in** `gtm job tam <campaign>` is available: builds the TAM through the workers (Hatchet) into
|
|
20
|
+
Postgres and prints the funnel (TAM → reachable → active), cost, run_id and a run-log row. Needs an
|
|
21
|
+
approved ICP and `config.yaml` → `tam: { source, max_accounts_per_segment }`; `mock-accounts`
|
|
22
|
+
generates fictional accounts to prove the pipeline locally. Re-runs update instead of duplicating;
|
|
23
|
+
suppression lowers "active". Local stack: `pnpm stack:up` + `pnpm worker` in gtm-core.
|
|
24
|
+
|
|
25
|
+
## [0.5.0] - 2026-10-24
|
|
26
|
+
- **action** Research-first intake: new `research` skill writes `context/research.md` (sourced facts,
|
|
27
|
+
public customers as suppression candidates, competitors as exclusion candidates, triggers) before any
|
|
28
|
+
questions; `00-intake` drafts intake from it and asks only what research can't answer, with an
|
|
29
|
+
example per question. `validate` warns while `context/research.md` is missing.
|
|
30
|
+
- **action** GitHub-enforced approvals: when `owners.approver` is an `@handle`, ICP and copy sign-off is
|
|
31
|
+
the approver's APPROVED review on a PR. `gtm approve icp|copy … --pr <n>` verifies it on GitHub and
|
|
32
|
+
records `approved_via`; `gtm validate` requires it, and `--verify-github` (in the CI template)
|
|
33
|
+
re-checks the review and that the reviewed commit matches the pinned hash. `gtm sync` maintains a
|
|
34
|
+
CODEOWNERS block for the approver. Named approvers keep `--by`. Existing repos: copy
|
|
35
|
+
`.gtm/templates/repo/github/workflows/gtm.yml` to enable verification in CI.
|
|
36
|
+
- **opt-in** `gtm track` mirrors stages and gates into a tracker (`project.yaml` → `tracker.kind`:
|
|
37
|
+
`github` issues, or `none`, the default for existing repos). New `gtm github setup [--apply]` creates
|
|
38
|
+
labels and the approval ruleset. Guide: `.gtm/guides/github.md` (incl. an org-wide board).
|
|
39
|
+
|
|
8
40
|
## [0.4.0] - 2026-10-24
|
|
9
41
|
- **no action** `gtm init . --name "<Name>"` sets up the current folder instead of creating a
|
|
10
42
|
subfolder (slug from the folder name, e.g. `gtm-project-acme` → `acme`, or `--slug`). Built for a
|
package/README.md
CHANGED
|
@@ -48,8 +48,10 @@ command writes**, and examples, without running it.
|
|
|
48
48
|
| `new-campaign <slug>` | scaffold `campaigns/<slug>/` | that folder |
|
|
49
49
|
| `validate [campaign]` | schemas, gates, cross-references, no lead data, core sync | nothing |
|
|
50
50
|
| `status` | campaigns, stages, gates | nothing |
|
|
51
|
-
| `approve icp --by "<name>"` | record ICP sign-off, pin its hash | `context/icp.yaml` |
|
|
52
|
-
| `approve copy <campaign> --by "<name>"` | record copy sign-off
|
|
51
|
+
| `approve icp --pr <n>` / `--by "<name>"` | record ICP sign-off (GitHub PR review, or by name), pin its hash | `context/icp.yaml` |
|
|
52
|
+
| `approve copy <campaign> --pr <n>` / `--by "<name>"` | record copy sign-off the same way | campaign `config.yaml` |
|
|
53
|
+
| `track stage\|gate-open\|gate-done …` | mirror stages and gates as GitHub issues (or `none`) | tracker only |
|
|
54
|
+
| `github setup [--apply]` | labels + approval ruleset on the repo | GitHub settings |
|
|
53
55
|
| `sync [--check]` | copy the core kit into `.gtm/` + `AGENTS.md` | `.gtm/`, `AGENTS.md` (nothing with `--check`) |
|
|
54
56
|
| `migrate [--dry-run]` | move YAML files to the current schema versions | YAML files |
|
|
55
57
|
| `upgrade [version]` | install a newer core, sync, migrate, validate, show changelog | deps, `.gtm/`, YAML |
|
|
@@ -57,9 +59,18 @@ command writes**, and examples, without running it.
|
|
|
57
59
|
|
|
58
60
|
Exit codes: `0` success, `1` failure or validation errors.
|
|
59
61
|
|
|
62
|
+
## GitHub mode
|
|
63
|
+
|
|
64
|
+
Set `project.yaml` owners to GitHub handles (`approver: "@maria"`). ICP and copy sign-off then **is**
|
|
65
|
+
the approver's PR review: `gtm sync` makes them the CODEOWNER of those files, `gtm approve … --pr <n>`
|
|
66
|
+
verifies the review on GitHub, and CI (`gtm validate --verify-github`) re-checks it against the exact
|
|
67
|
+
reviewed content. Stages and gates are mirrored as issues with `gtm track`. Approvers who aren't on
|
|
68
|
+
GitHub (or solo projects) use a plain name and `--by`. Details: `.gtm/guides/github.md`.
|
|
69
|
+
|
|
60
70
|
## For coding agents
|
|
61
71
|
|
|
62
72
|
- Inside a project repo, **read `AGENTS.md` first** and follow it; then `PROJECT.md`.
|
|
73
|
+
- Intake starts with the `research` skill: research the business before asking anyone anything.
|
|
63
74
|
- Read-only commands are always safe: `validate`, `status`, `sync --check`, `migrate --dry-run`,
|
|
64
75
|
and any `--help`.
|
|
65
76
|
- Never edit `AGENTS.md` or `.gtm/`. Never run `gtm approve` unless a named human explicitly approved
|