ttm-update
Check for takeToMarket updates and upgrade to the latest version. Compares installed version against npm registry and runs installer if newer version found.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Check for takeToMarket updates and upgrade to the latest version. Compares installed version against npm registry and runs installer if newer version found.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
[DEPRECATED v2.3.0 -> removed v3.0.0] Merged into /ttm-seo aeo.
[DEPRECATED v2.3.0 -> removed v3.0.0] Renamed to /ttm-email-check.
[DEPRECATED v2.3.0 -> removed v3.0.0] Merged into /ttm-seo keyword-map.
[DEPRECATED v2.3.0 -> removed v3.0.0] Renamed to /ttm-discover.
[DEPRECATED v2.3.0 -> removed v3.0.0] Merged into /ttm-seo audit.
Marketing fundamentals for engineers and developerneurs. Engineer-analogy-heavy tour: positioning, ICP, channels, funnels, AEO, lifecycle. Run once to get oriented. Section-by-section runnable with /ttm-101 --section <name>.
| name | ttm-update |
| description | Check for takeToMarket updates and upgrade to the latest version. Compares installed version against npm registry and runs installer if newer version found. |
| disable-model-invocation | false |
| allowed-tools | Bash Read |
Read .taketomarket/CONFIG.md. Parse first_run_seen (object) and inline_education (boolean, default true).
If inline_education is false: skip this step. Else if first_run_seen.ttm-update is not true, print the explainer below verbatim, then mark this skill as seen:
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-update
Use this exact check (bash) to decide whether to print: node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-update --raw -- the JSON seen field is true once the explainer has run before.
/ttm-update/ttm-update checks your installed takeToMarket version against the
npm registry, detects whether you installed via npm or git clone,
runs the appropriate upgrade path, then reconciles any locally-edited
skill files against the new source and offers per-file diffs.
Why it matters: skills evolve quickly and an out-of-date install silently misses gate improvements and bug fixes. This skill is the opinionated upgrader -- it knows the right command for your install method and preserves your local edits behind explicit prompts rather than overwriting them.
(Canonical source: references/inline-education-blurbs.md. Embedded verbatim because workflows do not @-resolve files at runtime.)
Check if takeToMarket needs updating and upgrade if available.
Detect how the user installed takeToMarket before deciding how to upgrade. Run this FIRST, before any version or legacy-folder work:
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" install-detect --raw
Parse the JSON method field. The value will be one of:
git clone. Upgrades happen with git pull in the
plugin root, then re-running the installer (node install.js or npx taketomarket@latest --yes from the cloned directory).npx taketomarket or npm install -g taketomarket.
Upgrades happen via npx taketomarket@latest --yes.Could not auto-detect your takeToMarket install location.
Manual upgrade options:
- npm: npx taketomarket@latest --yes
- clone: cd <your-clone>; git pull; node install.js
Halt the workflow until the user confirms the method to use.Remember the method and root values — they are used by the version-check
branching and the skill-file sync step below.
Before checking version, detect whether the project still uses the legacy
.marketing/ state directory and offer migration to .taketomarket/:
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" legacy-folder check --raw
Parse the JSON state field:
WARN: Legacy '.marketing/' detected. Migration will rename it to '.taketomarket/'. Recommend committing or backing up first. then prompt with AskUserQuestion:
.marketing/ to .taketomarket/ now? (recommended before upgrade)"node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" legacy-folder migrate --raw
ERROR: Both .marketing/ and .taketomarket/ exist. Manual resolution required before upgrade.
To resolve:
1. Compare contents: diff -r .marketing .taketomarket
2. Merge any unique files from .marketing/ into .taketomarket/.
3. Remove the legacy folder once .taketomarket/ is complete:
rm -rf .marketing
4. Re-run /ttm-update to continue the upgrade.
cat $HOME/.taketomarket/package.json 2>/dev/null | python3 -c "import sys,json; print(json.load(sys.stdin).get('version','unknown'))" 2>/dev/null || echo "unknown"
npm show taketomarket version 2>/dev/null || echo "unknown"
Compare versions. If already up to date, confirm "takeToMarket vX.X.X is up to date." and skip the install + sync steps below.
If a newer version is available, branch by the install method detected
earlier:
git -C "<root>" pull --ff-only && node "<root>/install.js"
(Substitute the root returned from install-detect.)npm install -g taketomarket@latest
(Falling back to npx taketomarket@latest --yes is acceptable if npm install -g is not desired.)After the install completes (clone or npm), reconcile any user-installed skill
files under ~/.claude/skills/ttm-*/ against the freshly installed source under
<root>/skills/ttm-*/. This catches the case where the user edited an installed
skill or where the installer skipped a file.
For each ttm-* skill directory present in BOTH locations:
SKILL.md and any supporting files) between
~/.claude/skills/<skill>/ and <root>/skills/<skill>/.AskUserQuestion with
priority critical:
~/.claude/skills/<skill>/<file> with the new source?"If <root> is null (unknown install method), skip this step entirely.
Record the upgrade outcome in .taketomarket/UPDATE-LOG.md (create the file if
it does not exist). Append the following block:
## YYYY-MM-DD HH:MM
- Updated from vX.X.X to vY.Y.Y
- Method: <clone|npm>
- Files synced: <count>
- Folder migration: <yes|no>
<yes|no> reflects whether the legacy-folder migration step actually ran a
rename during this invocation.
See ${CLAUDE_PLUGIN_ROOT}/templates/next-step-footer.md.