Guidance for AI agents working in the Diffmode Growth Tactics standalone repo.
The free Diffmode growth-ideation pipeline, packaged as a portable Claude Code plugin
(+ a Codex scaffold). It takes a founder from a 2-minute intake to a synthesis.md of
7-9 novel demand-gen tactic IDEAS and stops at synthesis. It is an extract of the
private ai-cmo monorepo's pipeline-skills/ β re-pointed so it runs standalone, leaking
none of the paid product.
This is a prompt-based system, not traditional software: no build, no runtime. The
"code" is Markdown (SKILL.md bodies, agent defs, orchestrator commands) executed by a
coding-agent runtime. Outputs are Markdown/JSON files written to a per-run workspace.
Buyer-facing essence / moat framing lives in README.md and plugin/README.md.
The synthesis method is what this repo gives away. Paid + proprietary (never ship,
never reference content of): the 576-vector growth database (tactics_DB/ in the private
repo), its intelligence layer + saturation/anti-vector tracking, and the downstream
prioritization + implementation stages. The free pipeline runs the same method on a
deliberately weaker per-run LIGHT DB mined fresh from public case studies, and stops.
Clean-room rule (moat-critical): growth-factors-mining and the whole synthesis chain
MUST NOT read anything under tactics_DB/. Mentions of tactics_DB/ in this repo are only
prohibitions / moat framing β never actual DB content, vector counts (no 542/8,238), or
prompts/ source files. Keep it that way.
- One repo, one physical copy of the skills. The 13 skills live once in
plugin/skills/. Edit them there.codex/.agents/skills/*are relative symlinks (../../../plugin/skills/<name>) β Codex reads the same files; do NOT create a second copy. - Only
plugin/ships to Claude users.marketplace.json(repo root) declaressource: ./plugin, so Claude copies just that dir to its cache.docs/,codex/, and the rootREADME.mddo not ship β put internal notes there, not inplugin/. - Codex reads a checked-out repo (not a copy), so the symlinks resolve. Codex side is
scaffold + guide only (verify-at-build-time) β see
codex/CODEX.md; the full Codex orchestrator is not built.
| Path | Role | Ships to Claude? |
|---|---|---|
plugin/skills/ |
13 SKILL.md β canonical methodology | yes |
plugin/agents/ |
4 worker sub-agents (research/analysis/synthesis/reviewer) | yes |
plugin/commands/ |
start (main entry), run-enrichment (dev/testing) orchestrators |
yes |
plugin/reference/ |
bundled Marketing-Channel-Menu-2026.md |
yes |
codex/ |
AGENTS.md + worker .toml + symlinked skills + CODEX.md |
no |
docs/ |
architecture, eval-methodology, STATUS, full-pipeline-map | no |
- No host-repo dependencies. Never reintroduce a "confirm repo root /
ai-cmo-workspace//prompts/present, abort if not" pre-flight. Runs write to./<slug>/in the user's current directory. - Resolve bundled files via
${CLAUDE_PLUGIN_ROOT}(expands to the install dir at runtime): the channel menu is${CLAUDE_PLUGIN_ROOT}/reference/β¦; reviewerspec_paths are${CLAUDE_PLUGIN_ROOT}/skills/<skill>/SKILL.md. Never point atprompts/β¦. - Skill bodies stay runtime-neutral β no Claude-only tool ids baked in (say "your
web-research backend (Perplexity MCP when present, else the built-in WebSearch)", not
mcp__perplexity__*). The concrete tool binding belongs inplugin/agents/*.md(Claude) /codex/agents/*.toml(Codex). Skills treat input paths (incl. the channel menu) as invoker-supplied. - Plugin name stays
diffmode-growth-tacticsβ thediffmode-growth-tactics:*namespaced dispatch ids in commands/agents depend on it.
diagnostics-intake β enrichment (competitors β audience β acq-tactics)
β think-tank Γ3 (competitor-gaps Β· cross-industry Β· platform-arbitrage)
β growth-factors-mining (LIGHT DB; starts right after the competitors gate, overlaps enrichment + think-tanks)
β lite-constraints β synthesis (explore β build) β synthesis.md (STOP)
β founder-report (best-effort packaging) β growth-tactics.md (the founder-facing view; renderer falls back to synthesis.md when absent)
A parameterized reviewer gates two stages (v2.3.0): enrichment competitors and the
final synthesis (build) β score β₯ 7, max 3 retries, blocking_issues injected into a FRESH
worker. Every other generating stage (audience + acquisition-tactics, the 3 think-tanks,
growth-factors, lite-constraints, the intermediate explore, the post-gate founder-report
packaging) gets a structural check. Workers are single-shot and stateless β every retry is a fresh
spawn; never SendMessage a returned worker. Research stages use a Perplexity MCP when
present and fall back to the built-in WebSearch otherwise; analysis + synthesis run with
no MCP by design (structurally enforces no-web-search).
- Edit a skill / agent / command β edit under
plugin/. After editing, reinstall the plugin to pick up changes. Codex symlinks need no action. - Validate β
claude plugin validate plugin(must pass before publishing / community submission). - Check nothing external leaked back in β
grep -rn "prompts/\|ai-cmo-workspace\|repo root" plugin/should return nothing but the README's references to this repo's own root. - Confirm Codex symlinks resolve β
ls -L codex/.agents/skills/lists all 13.
- Repo landing + install (both runtimes) β
README.md - Plugin internals + command reference β
plugin/README.md - Codex setup, MCP
KEY/TOKENgotcha, porting guide βcodex/CODEX.md - Codex orchestration model (DAG, gates, clean-room) β
codex/AGENTS.md - Design rationale / state contract β
docs/architecture.md - Reviewer methodology / scoring β
docs/eval-methodology.md - Build/version history β
docs/STATUS.md
- Marketplace name is
diffmode-free(inmarketplace.json+ install strings as@diffmode-free) β deliberately NOTdiffmode, to avoid colliding with / squatting the paiddiffmodeCLI + skill (github.com/agentic-builders/diffmode-cli). The plugin name staysdiffmode-growth-tactics. - Source of truth between this repo and the private
ai-cmo/pipeline-skills/dev origin is undecided β keep edits here in sync deliberately until that's settled. claude-communitymarketplace submission β optional, after the repo is verified.