Role
Ryan converts Nimi analysis and bounded startup context into a coherent four-week strategy proposal
and source-grounded content briefs for Temi.
Contract
Skills
ryan-strategy-skills contains seven allow-listed methods for diagnosis, thesis and positioning,
campaign architecture, channel and format decisions, funnel/CTA/measurement, brief construction,
and evidence-informed revision. Ryan loads it once and selects only relevant references.
Ryan principally synthesizes typed Nimi analysis, operator context, verified performance, and eligible
memory. When an exact researchRequest requires current external facts, the isolated
ryan_google_search_agent returns typed native-grounded evidence. Ryan never receives
google_search beside its skill tools.
Prompt method
Ryan first loads the strategy skill exactly once and at least one problem-relevant approved
reference. A deterministic callback trace rejects missing, duplicate, out-of-order, or unapproved
loads. The seven focused references cover diagnosis; positioning and thesis; campaign portfolio;
channels, formats, and cadence; funnel, CTA, and measurement; brief construction; and
evidence-informed learning and revision.
Ryan then synthesizes business objectives, audience pains, positioning, funnel intent, intended
conversion, and differentiated narrative. The resulting proposal defines content pillars, campaign
themes, channel roles, format mix, cadence guidance, CTAs, KPIs, success criteria, constraints, and
complete briefs.
Evidence is closed-world. Ryan may reference only supplied company or campaign context IDs, Nimi
moment and angle IDs, verified performance IDs, and eligible Memory Bank fact IDs. Every brief must
cite at least one Nimi moment or angle. Unsupported recommendations become assumptions with reduced
confidence.
Skill guidance changes Ryan’s method, not the typed contract, and can never be cited as evidence.
The source-coverage ledger is development documentation and is excluded from the runtime allow-list.
Evidence and provenance
The catalog is closed-world: operator context IDs, Nimi moment/angle IDs, verified performance IDs,
eligible Memory Bank fact IDs, and validated search IDs retain their exact kind and provenance. Every
brief cites a Nimi moment or angle. Weak support becomes a bounded assumption with reduced confidence.
Authority boundary
Ryan proposes strategy; Ryan does not write final post copy, approve strategy, select production
dates, mutate calendars, publish, create effect payloads or receipts, or mutate workflow state.
Strategy approval is a separate human decision bound to the persisted strategy digest.
Handoff
The complete proposal, evidence lineage, version, and digest are persisted before human strategy
approval. Only an authenticated approval matching that digest passes the unchanged strategy to Temi.
Runtime enforcement
Strict validators reject an invalid skill trace, invented references, ungrounded briefs, unsupported
operational channels, performance claims without verified IDs, incoherent theses where mechanically
detectable, unexplained high confidence, final-copy-shaped output, effects, approval claims, and
Memory Bank used as authority. Ryan never receives google_search directly. When an exact typed
researchRequest establishes that current external information is necessary, an isolated ADK
search agent runs native Google Search and returns a request-bound typed result. Deterministic code
requires matching chunks, supports, queries, titles, URLs, and search-entry-point metadata before
its search-* IDs can ground the strategy. Without that request, any search call fails closed.
Implementation references
- Prompt:
agent/harmonia_agent/ryan_prompt.py
- Skill runtime:
agent/harmonia_agent/ryan_skills.py
- Skill:
agent/harmonia_agent/skills/ryan-strategy-skills/SKILL.md
- Contracts:
StrategistInput, StrategistResult, and ContentStrategy in agent_models.py
- Tests:
agent/tests/test_ryan_skills.py, test_ryan_strategy.py, and test_ryan_stages.py
Last modified on August 28, 2026