LearnNewsExamplesServices
Frontmatter
id12577
titleGovern CTAs as a third identity class in neo-identity-update skill
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-gpt
createdAtJun 5, 2026, 1:49 PM
updatedAtJun 5, 2026, 8:42 PM
githubUrlhttps://github.com/neomjs/neo/issues/12577
authorneo-opus-vega
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 5, 2026, 8:42 PM

Govern CTAs as a third identity class in neo-identity-update skill

Closed v13.0.0/archive-v13-0-0-chunk-16 enhancementaiarchitecturemodel-experience
neo-opus-vega
neo-opus-vega commented on Jun 5, 2026, 1:49 PM

Context

The neo-identity-update skill (ADR 0018) governs Neo's identity across ~30 surfaces in two classes: FACTS (single-source-derive + coherence-check) and FRAMING (audience-segmented against the README apex). It does not govern CTAs / calls-to-action — what we ask a visitor to do. The conversion surface therefore drifts ad-hoc and breaks. Friction→gold candidate raised by @tobiu (2026-06-05): make CTAs a first-class governed dimension so they stay coherent, audience-segmented, and proof-surfacing every time identity is touched.

The Problem (publicly observable)

  • The README section that pitches the wedge — "Deploy a Cross-Model AI Engineering Team on Your Own Codebase"has no CTA: it pitches, then links to docs ("Read …"). A reader who wants the thing has no door.
  • The README's only actionable CTAs are npx neo-app@latest (Quickstart) and Discord/Slack joins (Community) — no audience-segmented door for a non-framework visitor, and no "see the proof" link.
  • Neo's strongest evidence that its claims are real — repo stats, merged-PR history over time, public agent review conversations — is fully visible but never surfaced at the claim. The README tells ("706 merged PRs of proof") where it could link the receipts.
  • CTAs span multiple surfaces (README hero / Quickstart / Community, portal header) with no single governance → silent drift (e.g. dead/low-retention channels persisting as the primary CTA).

The Architectural Reality

  • .agents/skills/neo-identity-update/SKILL.md (thin router) → references/update-protocol.md routes to facts-ledger.md (FACTS), framing-governance.md (FRAMING), affected-areas-map.md (surface inventory).
  • FACTS = single-source-derive. FRAMING = audience-segmented vs the README apex; anti-pattern = find-replace across surfaces.
  • CTAs are a structurally parallel third class — ACTIONS — that the skill should govern across the same affected-areas-map surfaces.

The Fix

Add the third class via a new reference (e.g. references/cta-governance.md) + hooks in update-protocol.md + entries in affected-areas-map.md. Progressive Disclosure: governance lives in the reference; do NOT bloat the router SKILL.md (per create-skill). Governance principles:

  1. Every pitch has a door — no surface that pitches a capability may dead-end into docs without a CTA.
  2. Audience-segmented doors — developer vs decision-maker paths (mirrors FRAMING; no find-replace).
  3. Proof-surfacing — claims/CTAs link the visible receipts (repo stats, PR history, public agent conversations) so a reader can see the claim is true, not just read it.
  4. No dead channel as a primary CTA — a CTA target must be live.
  5. A lead-capture / "talk to us" door exists as a governed CTA type (content business-owned — see Out of Scope).
  6. Coherence-checked across all affected-areas-map surfaces on every identity update.

Decision Record impact

aligned-with / extends ADR 0018 — adds a third identity class (ACTIONS) beside FACTS and FRAMING. If the implementer judges this a structural change to the source-of-truth model, amend ADR 0018 (apply the ADR successor-risk audit).

Acceptance Criteria

  • New references/cta-governance.md defines the ACTIONS class + the 6 principles; router SKILL.md gains only a thin one-line hook (no router bloat).
  • update-protocol.md routes to CTA governance; affected-areas-map.md inventories the CTA-bearing surfaces.
  • "Every pitch has a door", "no dead channel as primary CTA", and "proof-surfacing" are stated as checkable gates.
  • Cross-family review (skill non-negotiable).
  • turn-memory-pre-flight applied (skill substrate change).

Out of Scope

  • The specific CTA content — the actual offer, lead-capture copy, destination inbox — is a business/product decision (operator-owned), not this ticket. This ticket governs structure + principles; content fills in via a normal /neo-identity-update run once those decisions exist.
  • Editing the README/portal CTAs themselves (downstream identity-update runs).
  • Any client/customer naming (skill already forbids it).

Avoided Traps

  • Don't bloat the router — CTA governance is a reference, not SKILL.md content (Progressive Disclosure / create-skill).
  • Don't find-replace CTAs across surfaces — same audience-segmentation discipline as FRAMING.
  • Don't bake specific offers into the skill — it governs the form of CTAs; the content is business-owned and changes faster than the skill.

Related

  • ADR 0018 (identity source-of-truth model) · .agents/skills/neo-identity-update/ · create-skill (Progressive Disclosure) · turn-memory-pre-flight.

Origin Session ID: 4870c6b2-ee28-467c-875a-497b961d2a27 Handoff Retrieval Hint: query_raw_memories("CTA governance third identity class neo-identity-update FACTS FRAMING ACTIONS")

tobiu closed this issue on Jun 5, 2026, 8:42 PM
tobiu referenced in commit f8f7c82 - "feat(skill): govern identity CTAs as actions (#12577) (#12587)" on Jun 5, 2026, 8:42 PM