taketomarket 2.1.0 → 2.2.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/.claude-plugin/marketplace.json +27 -0
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +62 -33
- package/install.js +17 -10
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "taketomarket",
|
|
3
|
+
"displayName": "takeToMarket",
|
|
4
|
+
"description": "Marketing OS for Claude Code and Codex. Spec-driven campaigns with positioning invariants and quality gates.",
|
|
5
|
+
"version": "2.2.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Rishikesh Ranjan",
|
|
8
|
+
"url": "https://github.com/ranjanrishikesh"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://www.npmjs.com/package/taketomarket",
|
|
11
|
+
"repository": "https://github.com/ranjanrishikesh/takeToMarket",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": ["marketing", "campaigns", "positioning", "quality-gates", "agent-skills"],
|
|
14
|
+
"category": "productivity",
|
|
15
|
+
"source": "git",
|
|
16
|
+
"sourceUrl": "https://github.com/ranjanrishikesh/takeToMarket.git",
|
|
17
|
+
"skills": [
|
|
18
|
+
"ttm-init", "ttm-new-campaign", "ttm-brief", "ttm-research",
|
|
19
|
+
"ttm-produce", "ttm-review", "ttm-fix", "ttm-verify", "ttm-ship",
|
|
20
|
+
"ttm-measure", "ttm-learn", "ttm-health", "ttm-state", "ttm-next",
|
|
21
|
+
"ttm-resume", "ttm-archive", "ttm-positioning-check",
|
|
22
|
+
"ttm-positioning-shift", "ttm-brand-refresh", "ttm-icp-refresh",
|
|
23
|
+
"ttm-competitor-scan", "ttm-aeo-check", "ttm-seo-audit",
|
|
24
|
+
"ttm-email-preflight", "ttm-keyword-map", "ttm-affiliate-kit",
|
|
25
|
+
"ttm-repurpose", "ttm-update"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taketomarket",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Marketing operating system for Claude Code. Spec-driven campaigns with positioning-as-invariant enforcement, quality gate walls, and compound learnings.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "takeToMarket"
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# takeToMarket
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/taketomarket)
|
|
4
|
+
|
|
3
5
|
A marketing operating system for Claude Code and Codex. Spec-driven campaigns with positioning-as-invariant enforcement, quality gate walls, and compound learnings.
|
|
4
6
|
|
|
5
7
|
**Core invariant:** Every marketing asset ships with a verifiable outcome metric and passes through a positioning-invariant quality gate wall — no asset ships without both, ever.
|
|
@@ -39,9 +41,14 @@ Flags:
|
|
|
39
41
|
|
|
40
42
|
> Status: pending marketplace approval. Check https://github.com/ranjanrishikesh/takeToMarket for current status.
|
|
41
43
|
|
|
42
|
-
### Option 3 — Direct from GitHub
|
|
44
|
+
### Option 3 — Direct from GitHub (Claude Code)
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/plugin marketplace add ranjanrishikesh/takeToMarket
|
|
48
|
+
/plugin install taketomarket
|
|
49
|
+
```
|
|
43
50
|
|
|
44
|
-
|
|
51
|
+
This uses the Claude Code plugin system to install directly from the GitHub repo. Run both commands in Claude Code's chat.
|
|
45
52
|
|
|
46
53
|
### Option 4 — Manual (advanced)
|
|
47
54
|
|
|
@@ -54,11 +61,25 @@ node install.js
|
|
|
54
61
|
## Quick Start
|
|
55
62
|
|
|
56
63
|
```
|
|
57
|
-
/
|
|
58
|
-
/
|
|
59
|
-
/
|
|
64
|
+
/ttm-init # set up workspace (one time)
|
|
65
|
+
/ttm-new-campaign # create first campaign
|
|
66
|
+
/ttm-produce # run production wave
|
|
60
67
|
```
|
|
61
68
|
|
|
69
|
+
## Runtime Notes
|
|
70
|
+
|
|
71
|
+
Commands vary by tool:
|
|
72
|
+
|
|
73
|
+
| Runtime | Install path | Invocation |
|
|
74
|
+
|---------|-------------|------------|
|
|
75
|
+
| Claude Code | `~/.claude/skills/` | `/ttm-init` |
|
|
76
|
+
| Codex | `~/.codex/skills/` or `~/.agents/skills/` | `$ttm-init` or mention by name |
|
|
77
|
+
| Cursor | `~/.cursor/skills/` | `/ttm-init` |
|
|
78
|
+
| Windsurf | `~/.codeium/windsurf/skills/` | `@ttm-init` |
|
|
79
|
+
| Gemini CLI | `~/.gemini/skills/` | automatic or `/skills enable` |
|
|
80
|
+
|
|
81
|
+
All non-Claude runtimes also support `~/.agents/skills/` as a universal path. Select **option 6** during install to use it.
|
|
82
|
+
|
|
62
83
|
## Campaign Lifecycle
|
|
63
84
|
|
|
64
85
|
1. **Init** — set up workspace and reference files
|
|
@@ -77,39 +98,39 @@ node install.js
|
|
|
77
98
|
|
|
78
99
|
| Command | Description |
|
|
79
100
|
|---------|-------------|
|
|
80
|
-
| `/
|
|
81
|
-
| `/
|
|
82
|
-
| `/
|
|
83
|
-
| `/
|
|
84
|
-
| `/
|
|
85
|
-
| `/
|
|
86
|
-
| `/
|
|
87
|
-
| `/
|
|
88
|
-
| `/
|
|
89
|
-
| `/
|
|
90
|
-
| `/
|
|
91
|
-
| `/
|
|
92
|
-
| `/
|
|
93
|
-
| `/
|
|
94
|
-
| `/
|
|
95
|
-
| `/
|
|
96
|
-
| `/
|
|
97
|
-
| `/
|
|
98
|
-
| `/
|
|
99
|
-
| `/
|
|
100
|
-
| `/
|
|
101
|
-
| `/
|
|
102
|
-
| `/
|
|
103
|
-
| `/
|
|
104
|
-
| `/
|
|
105
|
-
| `/
|
|
106
|
-
| `/
|
|
101
|
+
| `/ttm-aeo-check` | Check citation status across AI engines for a query |
|
|
102
|
+
| `/ttm-affiliate-kit` | Generate creative kit for affiliate partners |
|
|
103
|
+
| `/ttm-archive` | Archive a completed campaign, finalize state, and update LEARNINGS.md |
|
|
104
|
+
| `/ttm-brand-refresh` | Update BRAND.md with new proof points and deprecate expired ones |
|
|
105
|
+
| `/ttm-brief` | Generate a campaign brief with mandatory outcome metrics, positioning anchor, and channel mix |
|
|
106
|
+
| `/ttm-competitor-scan` | On-demand competitor analysis that updates COMPETITORS.md |
|
|
107
|
+
| `/ttm-email-preflight` | Deliverability, dark-mode, and spam-trigger scan for email assets |
|
|
108
|
+
| `/ttm-fix` | Fix phase: root cause analysis, fix brief, re-produce, re-verify (capped 3×) |
|
|
109
|
+
| `/ttm-health` | Validate .marketing/ directory integrity, reference file completeness, and state consistency |
|
|
110
|
+
| `/ttm-icp-refresh` | Update ICP.md from new customer data including calls, reviews, and feedback |
|
|
111
|
+
| `/ttm-init` | Interview-driven onboarding that generates all .marketing/ reference files |
|
|
112
|
+
| `/ttm-keyword-map` | Generate keyword cluster map with intent tags |
|
|
113
|
+
| `/ttm-learn` | Extract lessons from campaign data, propose reference file edits, log to LEARNINGS.md |
|
|
114
|
+
| `/ttm-measure` | Analyze campaign analytics against outcome metrics using attribution models |
|
|
115
|
+
| `/ttm-new-campaign` | Create a new campaign directory with initialized state and reference file links |
|
|
116
|
+
| `/ttm-next` | Guide user to the right next command based on current campaign state |
|
|
117
|
+
| `/ttm-positioning-check` | Sample recent assets and report positioning drift percentage and analysis |
|
|
118
|
+
| `/ttm-positioning-shift` | Controlled positioning change with reasoning, migration plan, and approval gate |
|
|
119
|
+
| `/ttm-produce` | Generate content assets in fresh contexts loaded with brief, positioning, brand, ICP, and playbook |
|
|
120
|
+
| `/ttm-repurpose` | Fan out a long-form asset into derivatives across channels with full brief-produce-verify per derivative |
|
|
121
|
+
| `/ttm-research` | Market and audience research including SERP, competitor content, and narrative mapping |
|
|
122
|
+
| `/ttm-resume` | Resume a paused campaign at its last completed phase |
|
|
123
|
+
| `/ttm-review` | Present assets with structured review checklist for human evaluation |
|
|
124
|
+
| `/ttm-seo-audit` | Technical and content SEO audit of a URL or sitemap |
|
|
125
|
+
| `/ttm-ship` | Generate launch checklist confirming tracking, UTMs, funnel testing, and asset finalization |
|
|
126
|
+
| `/ttm-state` | Display current campaign states, decisions in flight, blockers, and experiments |
|
|
127
|
+
| `/ttm-verify` | Run all applicable quality gates on every asset with pass/fail report and line-level feedback |
|
|
107
128
|
|
|
108
129
|
## Verify Installation
|
|
109
130
|
|
|
110
131
|
Inside Claude Code, run:
|
|
111
132
|
```
|
|
112
|
-
/
|
|
133
|
+
/ttm-health
|
|
113
134
|
```
|
|
114
135
|
|
|
115
136
|
This validates directory integrity, reference file presence, and state consistency.
|
|
@@ -117,3 +138,11 @@ This validates directory integrity, reference file presence, and state consisten
|
|
|
117
138
|
## License
|
|
118
139
|
|
|
119
140
|
MIT — see [LICENSE](LICENSE).
|
|
141
|
+
|
|
142
|
+
## Privacy & Security
|
|
143
|
+
|
|
144
|
+
takeToMarket runs entirely on your local filesystem. No data collection, no telemetry, no servers. See [SECURITY.md](SECURITY.md) for the combined privacy and security policy.
|
|
145
|
+
|
|
146
|
+
## Contributing
|
|
147
|
+
|
|
148
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
|
package/install.js
CHANGED
|
@@ -29,7 +29,7 @@ const FILES_TO_COPY = [
|
|
|
29
29
|
|
|
30
30
|
// ── Runtime Selection ─────────────────────────────────────────────────────────
|
|
31
31
|
|
|
32
|
-
const RUNTIME_MENU = ['claude', 'codex', 'cursor', 'windsurf', 'gemini'];
|
|
32
|
+
const RUNTIME_MENU = ['claude', 'codex', 'cursor', 'windsurf', 'gemini', 'agents'];
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Parse user input from the runtime selection prompt.
|
|
@@ -39,15 +39,16 @@ const RUNTIME_MENU = ['claude', 'codex', 'cursor', 'windsurf', 'gemini'];
|
|
|
39
39
|
function parseRuntimeChoices(input) {
|
|
40
40
|
const trimmed = input.trim();
|
|
41
41
|
if (!trimmed) return null;
|
|
42
|
-
if (trimmed === '
|
|
43
|
-
if (trimmed === '
|
|
42
|
+
if (trimmed === '7') return [...RUNTIME_MENU];
|
|
43
|
+
if (trimmed === '8') return ['custom'];
|
|
44
44
|
|
|
45
45
|
const parts = trimmed.split(',').map(s => s.trim());
|
|
46
46
|
const names = new Set();
|
|
47
47
|
for (const part of parts) {
|
|
48
48
|
const n = parseInt(part, 10);
|
|
49
|
-
if (isNaN(n) || n < 1 || n >
|
|
50
|
-
if (n === 7) return [
|
|
49
|
+
if (isNaN(n) || n < 1 || n > 8) return null;
|
|
50
|
+
if (n === 7) return [...RUNTIME_MENU];
|
|
51
|
+
if (n === 8) return ['custom'];
|
|
51
52
|
names.add(RUNTIME_MENU[n - 1]);
|
|
52
53
|
}
|
|
53
54
|
return [...names];
|
|
@@ -85,6 +86,11 @@ function buildRuntimeTargets(homeDir = os.homedir()) {
|
|
|
85
86
|
skillsDir: path.join(homeDir, '.gemini', 'skills'),
|
|
86
87
|
parentDir: path.join(homeDir, '.gemini'),
|
|
87
88
|
},
|
|
89
|
+
agents: {
|
|
90
|
+
label: 'All runtimes (~/.agents/skills/ — universal)',
|
|
91
|
+
skillsDir: path.join(homeDir, '.agents', 'skills'),
|
|
92
|
+
parentDir: path.join(homeDir, '.agents'),
|
|
93
|
+
},
|
|
88
94
|
};
|
|
89
95
|
}
|
|
90
96
|
|
|
@@ -134,8 +140,9 @@ async function promptRuntimeSelection(args, homeDir = os.homedir()) {
|
|
|
134
140
|
console.log(' 3. Cursor');
|
|
135
141
|
console.log(' 4. Windsurf');
|
|
136
142
|
console.log(' 5. Gemini CLI');
|
|
137
|
-
console.log(' 6. All
|
|
138
|
-
console.log(' 7.
|
|
143
|
+
console.log(' 6. All runtimes via ~/.agents/skills/ (universal — works for Codex, Cursor, Windsurf, Gemini)');
|
|
144
|
+
console.log(' 7. All of the above');
|
|
145
|
+
console.log(' 8. Let me type a custom path');
|
|
139
146
|
console.log('');
|
|
140
147
|
|
|
141
148
|
let choices = null;
|
|
@@ -144,7 +151,7 @@ async function promptRuntimeSelection(args, homeDir = os.homedir()) {
|
|
|
144
151
|
const input = await ask('Your choice (comma-separated, e.g. 1,3): ');
|
|
145
152
|
choices = parseRuntimeChoices(input);
|
|
146
153
|
if (choices === null) {
|
|
147
|
-
console.log('Invalid input. Please enter numbers 1-
|
|
154
|
+
console.log('Invalid input. Please enter numbers 1-8 separated by commas.');
|
|
148
155
|
attempts++;
|
|
149
156
|
}
|
|
150
157
|
}
|
|
@@ -429,11 +436,11 @@ function printInstallSummary(packageRoot = PACKAGE_ROOT) {
|
|
|
429
436
|
console.log('');
|
|
430
437
|
console.log('Available commands:');
|
|
431
438
|
for (const { name, description } of skills) {
|
|
432
|
-
const cmd =
|
|
439
|
+
const cmd = `/${name}`.padEnd(30);
|
|
433
440
|
console.log(` ${cmd} ${description}`);
|
|
434
441
|
}
|
|
435
442
|
console.log('');
|
|
436
|
-
console.log('Quick start: open any project in Claude Code and run /
|
|
443
|
+
console.log('Quick start: open any project in Claude Code and run /ttm-init');
|
|
437
444
|
}
|
|
438
445
|
|
|
439
446
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taketomarket",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Marketing operating system for Claude Code. Spec-driven campaigns with positioning-as-invariant enforcement, quality gate walls, and compound learnings.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|