{"id":42345,"plugin_id":"plugin_asdk_app_6a3317442fc8819193f6cb06ef619a67","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:04:29.332Z","digest":"a26c56a8a58d37a43ef5af87e05093ce2ef8436613792e046a3c3021c2a232ca","against":null,"payload":{"description":"Create a new Ninjo sales agent from a brief, or iterate an existing one from real conversations. Use when the operator says \"quiero crear un agente\", \"armá el agente para mi lanzamiento\", \"cambiá cómo responde cuando preguntan el precio\", \"el agente suena muy vendedor\", \"agregá esta objeción\", or asks to rewrite, tune or deploy a prompt. Builds the full SDK (system prompt plus the 8 v5Config fields) through the Ninjo MCP tools and deploys with deploy_agent_sdk.","included_files":[],"name":"build-agent","skill_md_contents":"---\nname: build-agent\ndescription: Create a new Ninjo sales agent from a brief, or iterate an existing one from real conversations. Use when the operator says \"quiero crear un agente\", \"armá el agente para mi lanzamiento\", \"cambiá cómo responde cuando preguntan el precio\", \"el agente suena muy vendedor\", \"agregá esta objeción\", or asks to rewrite, tune or deploy a prompt. Builds the full SDK (system prompt plus the 8 v5Config fields) through the Ninjo MCP tools and deploys with deploy_agent_sdk.\n---\n\n# Build or iterate a Ninjo agent\n\nA Ninjo agent is a **system**: a system prompt, eight v5Config fields, the triggers that route\nmessages to it, and the automation wired around it. This skill covers the prompt and the\neight fields. Automation is the `wire-automation` skill; run it after every new agent.\nReply in the operator's language. Prompts are written in the creator's own dialect.\n\n## 0. Load the playbook first\n\nCall `get_playbook_index`, then `get_playbook_doc` on:\n\n- `templates/principles`: the single prompt architecture (\"fewer rules, more examples\").\n- The motion flavor that matches how the creator closes:\n  `templates/principles-express` (low ticket, drop the resource fast),\n  `templates/principles-consultative` (mid ticket, discovery then link in DM),\n  `templates/principles-deep-nurture` (premium, empathy plus video, DM closes),\n  `templates/principles-book-the-call` (high ticket, the call closes, DM only qualifies).\n- `knowledge/best-practices-top10`: the quality rubric and the only home of the numbers\n  (example cap, principle count, hard-rule count).\n- One worked sample in a similar vertical (`sample-wellness-bookcall`,\n  `sample-petcare-consultative`, `sample-finance-bookcall`, `sample-prodev-consultative`).\n  Pass `section` to read one file, for example `examples`.\n\n## 1. Start from what is live\n\n- **Iterating:** `get_agent_config(agent_id)` is the source of truth. Never edit from memory\n  or from a pasted copy; the operator may have changed the agent in Ninjo since.\n- **Creating:** `get_me` gives the `influencer_id`. If `scope` is `multi-influencer`, pass\n  `influencer_id` on every call. `get_self_serve_data` may already hold the creator's bio,\n  program and Instagram posts; use them.\n- Gather the brief: identity, voice (5 or 6 real messages the creator wrote), conversation\n  flow, resources with real URLs, program and pricing, happy-path examples, edge cases. If\n  the operator shared a style guide or example conversations, **that is the source of truth\n  for tone**; examples must be adaptations of it, not inventions.\n\n## 2. Author the SDK\n\n- `system`: identity and mission, voice, one simple flow, at most 7 principles, tools.\n  No hard-rule lists; style lives in examples. Principles beat rules.\n- `examples`: the highest-leverage field. Real or adapted conversations that show the flow\n  end to end, including the moment the link or resource goes out. Pure dialogue, no\n  instructions inside.\n- `knowledge_base`, `objections`, `personal_story`: prose. `keywords`, `program`,\n  `resources`, `case_studies`: JSON values (arrays or objects), never JSON-encoded strings.\n- **All eight fields on a first deploy.** `system`, `examples` and `knowledge_base` must carry\n  real content; at least one of `keywords` or `program` must be populated. A keywords-only\n  config runs but is not a real agent, and nothing stops it from going live.\n- Cross-check before deploying: every URL in the prompt exists in `resources`; examples obey\n  the system prompt; no two files disagree on a price, a date or a link (BP-5); no action the\n  agent can take is unguarded (BP-7).\n- **Do not solve platform problems with prompt rules.** The agent does not know what a\n  \"bubble\" is; message splitting, delays, stopping after a purchase and follow-ups are\n  platform settings and automation, not prose.\n- Custom properties are set by the platform's evaluator reading the transcript afterwards.\n  The agent cannot set them; never write \"el agente marca la propiedad X\".\n\n## 3. Deploy and verify\n\n1. New agent: `create_agent` with the system prompt, inactive and unattached. Capture `agent_id`.\n2. `deploy_agent_sdk(agent_id, ...)`. Patch semantics: an omitted field stays untouched. It\n   diffs, writes only what changed, re-fetches and verifies. On `verified: false` or\n   `partial: true` call `restore_prompt_version` with the `rollback_version_id` it returned.\n3. `get_agent_config` again: the config is complete, and the four JSON fields came back as\n   arrays or objects, not strings.\n4. Test before the operator does: `generate_synthetic_conversations` on the deployed agent,\n   then read each transcript yourself. Automated scores are a hint, not a verdict.\n5. New agent only: run the `wire-automation` skill, then `diagnose_agent` until it reports\n   `complete: true`. Then link the agent to a connected account (`set_connected_account`) and\n   activate it (`set_agent_status`). Without the link, incoming DMs never reach the agent.\n\n## 4. When iterating from a complaint\n\nOne hypothesis per iteration. Pull the conversations that show the problem\n(`search_conversations` with the relevant filter, or the `conversation_id` the operator gave),\nname the single change, make it in the one file that owns the behaviour, deploy only that\nfield, and re-test with synthetic conversations. If the same problem survives two or three\niterations the issue is structural: simplify the flow or split it, do not add more rules.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}