@salesforce/afv-skills 1.58.0 → 1.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-architecture-analyze/SKILL.md +66 -17
  3. package/skills/agentforce-architecture-analyze/assets/cli/show_access_token.yaml +4 -7
  4. package/skills/agentforce-architecture-analyze/references/contract.json +1 -1
  5. package/skills/agentforce-architecture-analyze/scripts/emit_env.py +2 -2
  6. package/skills/agentforce-architecture-analyze/scripts/main.py +40 -44
  7. package/skills/agentforce-architecture-analyze/scripts/rest_client.py +11 -3
  8. package/skills/agentforce-architecture-analyze/scripts/sf_cli.py +77 -10
  9. package/skills/agentforce-architecture-analyze/scripts/tests/test_end_to_end_fixture.py +1 -0
  10. package/skills/agentforce-architecture-analyze/scripts/tests/test_flow_children_inflation.py +1 -0
  11. package/skills/agentforce-architecture-analyze/scripts/tests/test_main_pipeline.py +53 -2
  12. package/skills/agentforce-architecture-analyze/scripts/tests/test_resolve_creds.py +184 -36
  13. package/skills/agentforce-architecture-analyze/scripts/tests/test_rest_client.py +17 -0
  14. package/skills/agentforce-architecture-analyze/scripts/tests/test_sf_cli.py +165 -11
  15. package/skills/agentforce-architecture-analyze/scripts/tests/test_skill_md_pipeline_block.py +319 -0
  16. package/skills/agentforce-bot-upgrade/SKILL.md +3 -1
  17. package/skills/agentforce-d360-analyze/SKILL.md +28 -10
  18. package/skills/agentforce-d360-analyze/scripts/dc.py +200 -50
  19. package/skills/agentforce-d360-analyze/scripts/discover_sessions.py +10 -6
  20. package/skills/agentforce-d360-analyze/scripts/fetch_dc.py +22 -6
  21. package/skills/agentforce-d360-analyze/scripts/resolve_session.py +21 -13
  22. package/skills/agentforce-d360-analyze/scripts/tests/test_dc_and_resolve_session.py +298 -76
  23. package/skills/agentforce-d360-analyze/scripts/tests/test_default_target_org.py +432 -0
  24. package/skills/agentforce-d360-analyze/scripts/tests/test_discover_sessions.py +1 -1
  25. package/skills/agentforce-d360-analyze/scripts/tests/test_resolve_session_main.py +9 -3
  26. package/skills/agentforce-d360-analyze/scripts/tests/test_skill_md_prefix_block.py +176 -0
  27. package/skills/agentforce-generate/SKILL.md +21 -1
  28. package/skills/agentforce-generate/references/known-issues.md +51 -1
  29. package/skills/agentforce-generate/references/legacy-nga-regression-eval.md +547 -0
  30. package/skills/agentforce-generate/references/upgrade-legacy-agent-to-agentscript.md +577 -0
  31. package/skills/agentforce-generate/scripts/upgrade-legacy-nga-analyze.py +404 -0
  32. package/skills/agentforce-generate/scripts/upgrade-legacy-nga-run-trials.sh +58 -0
  33. package/skills/agentforce-persona-generate/SKILL.md +505 -0
  34. package/skills/agentforce-persona-generate/assets/checklist-template.md +100 -0
  35. package/skills/agentforce-persona-generate/assets/persona-encoding-template.md +252 -0
  36. package/skills/agentforce-persona-generate/assets/persona-template.md +229 -0
  37. package/skills/agentforce-persona-generate/assets/sample-dialog-template.md +50 -0
  38. package/skills/agentforce-persona-generate/assets/workshop-outline-template.md +97 -0
  39. package/skills/agentforce-persona-generate/examples/concierge-persona.md +189 -0
  40. package/skills/agentforce-persona-generate/examples/concierge-sample-dialog.md +70 -0
  41. package/skills/agentforce-persona-generate/examples/drover-persona.md +194 -0
  42. package/skills/agentforce-persona-generate/examples/drover-sample-dialog.md +62 -0
  43. package/skills/agentforce-persona-generate/examples/steady-hand-persona.md +188 -0
  44. package/skills/agentforce-persona-generate/examples/steady-hand-sample-dialog.md +68 -0
  45. package/skills/agentforce-persona-generate/examples/yt-persona.md +195 -0
  46. package/skills/agentforce-persona-generate/examples/yt-sample-dialog.md +66 -0
  47. package/skills/agentforce-persona-generate/references/attributions.md +36 -0
  48. package/skills/agentforce-persona-generate/references/interaction-design-notes.md +30 -0
  49. package/skills/agentforce-persona-generate/references/persona-encoding-guide.md +566 -0
  50. package/skills/agentforce-persona-generate/references/persona-framework.md +796 -0
  51. package/skills/agentforce-persona-generate/references/refinement-mappings.md +31 -0
  52. package/skills/agentforce-persona-generate/references/scoring-rubric.md +58 -0
  53. package/skills/agentforce-persona-generate/references/voice-catalog.json +2327 -0
  54. package/skills/agentforce-persona-generate/references/workshop-question-policy.md +90 -0
  55. package/skills/agentforce-persona-generate/references/workshop-scenario-seeds.md +119 -0
  56. package/skills/agentforce-persona-generate/scripts/parse_agent_yaml.py +223 -0
  57. package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +17 -27
  58. package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +7 -17
  59. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +47 -63
  60. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +10 -13
  61. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -46
  62. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +4 -21
  63. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +58 -82
  64. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +16 -315
  65. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +9 -24
  66. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -44
  67. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +11 -63
  68. package/skills/consumer-goods-rtr-datacloud-export-configure/SKILL.md +2 -1
  69. package/skills/consumer-goods-tpe-dashboard-configure/SKILL.md +2 -1
  70. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/SKILL.md +2 -1
  71. package/skills/consumer-goods-tpe-datakit-deploy/SKILL.md +2 -1
  72. package/skills/data360-schema-get/SKILL.md +3 -3
  73. package/skills/design-systems-slds-validate/references/report-format.md +1 -1
  74. package/skills/dx-app-analytics-query/SKILL.md +8 -8
  75. package/skills/dx-org-manage/SKILL.md +1 -0
  76. package/skills/dx-org-shape-manage/SKILL.md +1 -0
  77. package/skills/dx-org-snapshot-manage/SKILL.md +172 -0
  78. package/skills/dx-org-snapshot-manage/examples/create_error_output.json +16 -0
  79. package/skills/dx-org-snapshot-manage/examples/create_success_output.json +19 -0
  80. package/skills/dx-org-snapshot-manage/examples/delete_output.json +9 -0
  81. package/skills/dx-org-snapshot-manage/examples/get_output.json +19 -0
  82. package/skills/dx-org-snapshot-manage/examples/list_output.json +36 -0
  83. package/skills/dx-org-snapshot-manage/references/cli_flags.md +179 -0
  84. package/skills/dx-org-snapshot-manage/references/snapshot_usage.md +55 -0
  85. package/skills/dx-org-trial-expiration-check/SKILL.md +1 -1
  86. package/skills/dx-org-trial-expiration-check/scripts/check_expiration.sh +2 -2
  87. package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +7 -5
  88. package/skills/education-cloud-student-recruitment-agent-configure/references/prerequisites.md +11 -11
  89. package/skills/experience-content-media-image-generate/SKILL.md +83 -0
  90. package/skills/experience-content-media-image-generate/scripts/download-image.sh +84 -0
  91. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +12 -12
  92. package/skills/experience-ui-bundle-app-coordinate/references/phase-completion-validation.md +3 -3
  93. package/skills/experience-ui-bundle-app-coordinate/references/phase-execution-pattern.md +9 -7
  94. package/skills/experience-ui-bundle-app-coordinate/scripts/check-dangling-refs.mjs +132 -0
  95. package/skills/experience-ui-bundle-app-coordinate/scripts/check-hosting-target.mjs +62 -0
  96. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-1-complete.mjs +71 -0
  97. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-4-complete.mjs +95 -0
  98. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-6-ready.mjs +78 -0
  99. package/skills/experience-ui-bundle-app-coordinate/scripts/check-prerequisites.mjs +21 -0
  100. package/skills/experience-ui-bundle-app-coordinate/scripts/check-sfdx-project.mjs +28 -0
  101. package/skills/experience-ui-bundle-custom-app-generate/SKILL.md +3 -1
  102. package/skills/experience-ui-bundle-custom-app-generate/scripts/resolve-uibundle-path.mjs +40 -0
  103. package/skills/experience-ui-bundle-frontend-generate/SKILL.md +7 -5
  104. package/skills/experience-ui-bundle-frontend-generate/scripts/check-preconditions.mjs +70 -0
  105. package/skills/experience-ui-bundle-frontend-generate/scripts/resolve-ui-bundle.mjs +76 -0
  106. package/skills/experience-ui-bundle-frontend-generate/scripts/verify-rules.mjs +115 -0
  107. package/skills/experience-ui-bundle-metadata-generate/SKILL.md +7 -3
  108. package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +1 -1
  109. package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +1 -1
  110. package/skills/experience-ui-bundle-metadata-generate/scripts/check-api-version.mjs +43 -0
  111. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.mjs +131 -0
  112. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.mjs +152 -0
  113. package/skills/experience-ui-bundle-mfa-configure/references/branding.md +10 -6
  114. package/skills/external-diagram-mermaid-generate/SKILL.md +12 -12
  115. package/skills/field-service-data-capture-migrate/references/component-mapping.md +1 -1
  116. package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +1 -2
  117. package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +1 -0
  118. package/skills/field-service-data-capture-migrate/references/transformer-rules.md +1 -1
  119. package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +12 -1
  120. package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +4 -1
  121. package/skills/field-service-setup-orchestrator-get/SKILL.md +0 -1
  122. package/skills/insurance-brokerage-agency-billing-configure/SKILL.md +233 -0
  123. package/skills/insurance-brokerage-agency-billing-configure/references/accounting-setup.md +117 -0
  124. package/skills/insurance-brokerage-agency-billing-configure/references/billing-rules-config.md +237 -0
  125. package/skills/insurance-brokerage-agency-billing-configure/references/billing-settings.md +271 -0
  126. package/skills/insurance-brokerage-agency-billing-configure/references/demo-policy-config.md +138 -0
  127. package/skills/insurance-brokerage-agency-billing-configure/references/org-defaults.md +64 -0
  128. package/skills/insurance-brokerage-agency-billing-configure/references/permissions-config.md +226 -0
  129. package/skills/insurance-brokerage-agency-billing-configure/references/prerequisites.md +142 -0
  130. package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +3 -2
  131. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-execution-state-and-recovery.md +3 -3
  132. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-overview.md +68 -45
  133. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-visit-creation-data.md +17 -18
  134. package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +16 -3
  135. package/skills/life-sciences-kam-coordinate/references/stage-5-data-creation-data.md +16 -13
  136. package/skills/marketing-message-test/SKILL.md +194 -0
  137. package/skills/marketing-message-test/references/api-contract.md +333 -0
  138. package/skills/omnistudio-callable-apex-generate/SKILL.md +3 -3
  139. package/skills/omnistudio-datamapper-generate/SKILL.md +6 -6
  140. package/skills/omnistudio-datapacks-deploy/SKILL.md +11 -11
  141. package/skills/omnistudio-dependencies-analyze/SKILL.md +5 -5
  142. package/skills/omnistudio-epc-catalog-generate/SKILL.md +6 -6
  143. package/skills/omnistudio-flexcard-generate/SKILL.md +6 -6
  144. package/skills/omnistudio-integration-procedure-generate/SKILL.md +6 -6
  145. package/skills/omnistudio-omniscript-generate/SKILL.md +6 -5
  146. package/skills/platform-apex-logs-debug/SKILL.md +1 -0
  147. package/skills/platform-metadata-deploy/SKILL.md +1 -0
  148. package/skills/platform-models-api-configure/SKILL.md +5 -5
  149. package/skills/platform-soql-query/SKILL.md +1 -0
  150. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +17 -6
  151. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +107 -192
  152. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +6 -6
  153. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +49 -20
  154. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +4 -4
  155. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +224 -290
  156. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +295 -0
  157. package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -1
  158. package/skills/service-itsm-slack-itservice-configure/SKILL.md +2 -1
  159. package/skills/service-itsm-slack-itservice-configure/references/manage-slack-connection.md +2 -2
  160. package/skills/service-omni-channel-setup-coordinate/SKILL.md +20 -13
  161. package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +5 -55
  162. package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +0 -38
  163. package/skills/service-omni-command-center-analyze/SKILL.md +2 -3
  164. package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
  165. package/skills/tableau-next-asset-create/README.md +65 -0
  166. package/skills/tableau-next-asset-create/SKILL.md +409 -0
  167. package/skills/tableau-next-asset-create/references/admin-users.md +149 -0
  168. package/skills/tableau-next-asset-create/references/ai-readiness.md +355 -0
  169. package/skills/tableau-next-asset-create/references/alerts.md +111 -0
  170. package/skills/tableau-next-asset-create/references/build-workflow.md +819 -0
  171. package/skills/tableau-next-asset-create/references/dashboard-authoring.md +302 -0
  172. package/skills/tableau-next-asset-create/references/dashboard-design-principles.md +352 -0
  173. package/skills/tableau-next-asset-create/references/data-transform-gotchas.md +210 -0
  174. package/skills/tableau-next-asset-create/references/data-understanding.md +387 -0
  175. package/skills/tableau-next-asset-create/references/deep-reference-index.md +74 -0
  176. package/skills/tableau-next-asset-create/references/destructive-operations.md +62 -0
  177. package/skills/tableau-next-asset-create/references/edit-dashboard.md +273 -0
  178. package/skills/tableau-next-asset-create/references/edit-visualization.md +529 -0
  179. package/skills/tableau-next-asset-create/references/empty-source-handling.md +104 -0
  180. package/skills/tableau-next-asset-create/references/ingest-and-metric-gotchas.md +638 -0
  181. package/skills/tableau-next-asset-create/references/insight-bundle.md +69 -0
  182. package/skills/tableau-next-asset-create/references/large-flat-file-handling.md +331 -0
  183. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/_envelope.json +54 -0
  184. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/_shared-widget-fields.json +122 -0
  185. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/add_page.json +29 -0
  186. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/delete_page.json +27 -0
  187. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/discard_dashboard.json +11 -0
  188. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/move_widget.json +30 -0
  189. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/move_widget_to_page.json +30 -0
  190. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/place_widget_on_page.json +30 -0
  191. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/remove_widget_from_dashboard.json +16 -0
  192. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/remove_widget_from_page.json +26 -0
  193. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/rename_page.json +28 -0
  194. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/save_dashboard.json +18 -0
  195. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/undo.json +11 -0
  196. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_button_widget.json +69 -0
  197. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_container_widget.json +88 -0
  198. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_filter_widget.json +146 -0
  199. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_metric_widget.json +78 -0
  200. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_navigation_widget.json +80 -0
  201. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_parameter_widget.json +160 -0
  202. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_text_widget.json +103 -0
  203. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_visualization_widget.json +68 -0
  204. package/skills/tableau-next-asset-create/references/sdm-tool-reference.md +721 -0
  205. package/skills/tableau-next-asset-create/references/semantic-query-and-enrichment.md +355 -0
  206. package/skills/tableau-next-asset-create/references/shared-gates.md +322 -0
  207. package/skills/tableau-next-asset-create/references/sharing-and-promotion.md +306 -0
  208. package/skills/tableau-next-asset-create/references/tasks/ai-readiness-audit.md +51 -0
  209. package/skills/tableau-next-asset-create/references/tasks/analyze-data.md +48 -0
  210. package/skills/tableau-next-asset-create/references/tasks/build-dashboard.md +66 -0
  211. package/skills/tableau-next-asset-create/references/tasks/build-end-to-end.md +73 -0
  212. package/skills/tableau-next-asset-create/references/tasks/create-data-transform.md +51 -0
  213. package/skills/tableau-next-asset-create/references/tasks/create-viz.md +58 -0
  214. package/skills/tableau-next-asset-create/references/tasks/edit-dashboard.md +80 -0
  215. package/skills/tableau-next-asset-create/references/tasks/edit-sdm.md +106 -0
  216. package/skills/tableau-next-asset-create/references/tasks/edit-viz.md +40 -0
  217. package/skills/tableau-next-asset-create/references/tasks/enrich-model.md +68 -0
  218. package/skills/tableau-next-asset-create/references/tasks/ingest-flat-file.md +68 -0
  219. package/skills/tableau-next-asset-create/references/tasks/manage-alert.md +35 -0
  220. package/skills/tableau-next-asset-create/references/tasks/profile-dataset.md +47 -0
  221. package/skills/tableau-next-asset-create/references/tasks/promote-or-reuse.md +46 -0
  222. package/skills/tableau-next-asset-create/references/tasks/provision-user.md +39 -0
  223. package/skills/tableau-next-asset-create/references/tasks/query-model.md +92 -0
  224. package/skills/tableau-next-asset-create/references/tasks/review-verified-questions.md +42 -0
  225. package/skills/tableau-next-asset-create/references/tasks/share-asset.md +37 -0
  226. package/skills/tableau-next-asset-create/references/verified-questions.md +125 -0
  227. package/skills/tableau-next-asset-create/references/viz-authoring.md +992 -0
  228. package/skills/experience-ui-bundle-app-coordinate/scripts/check-dangling-refs.sh +0 -42
  229. package/skills/experience-ui-bundle-app-coordinate/scripts/check-hosting-target.sh +0 -26
  230. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-1-complete.sh +0 -35
  231. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-4-complete.sh +0 -47
  232. package/skills/experience-ui-bundle-app-coordinate/scripts/check-phase-6-ready.sh +0 -33
  233. package/skills/experience-ui-bundle-app-coordinate/scripts/check-prerequisites.sh +0 -20
  234. package/skills/experience-ui-bundle-app-coordinate/scripts/check-sfdx-project.sh +0 -15
  235. package/skills/experience-ui-bundle-custom-app-generate/scripts/resolve-uibundle-path.sh +0 -30
  236. package/skills/experience-ui-bundle-frontend-generate/scripts/check-preconditions.sh +0 -37
  237. package/skills/experience-ui-bundle-frontend-generate/scripts/resolve-ui-bundle.sh +0 -66
  238. package/skills/experience-ui-bundle-frontend-generate/scripts/verify-rules.sh +0 -58
  239. package/skills/experience-ui-bundle-metadata-generate/scripts/check-api-version.sh +0 -30
  240. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +0 -73
  241. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +0 -118
  242. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +0 -102
@@ -0,0 +1,505 @@
1
+ ---
2
+ name: agentforce-persona-generate
3
+ description: "Use to design an AI agent persona — identity, voice, tone, behavioral style, guardrails — and encode it into Agent Script (.agent files) or Agentforce Builder field values. Runs four sequenced phases (DRAFT, REFINE, SCORE, ENCODE) plus five spokes (NAME, FILL OUT, ADJUST, CHECKLIST, WORKSHOP). Supports greenfield (brand input to a starter .agent file) and brownfield (audit an existing .agent file and re-encode persona fields only), with a 100-point evaluation rubric. Trigger when a user designs a new agent persona, retrofits persona consistency, translates brand guidelines into agent voice, defines tone/register/formality/warmth/humor/personification, encodes a persona for Agent Script or Agentforce Builder, or scores or audits an existing .agent file for persona quality. Do not trigger for building Agentforce actions/metadata, authoring Agent Script flow control without persona work, or testing agent conversations."
4
+ metadata:
5
+ relatedSkills:
6
+ - "agentforce-generate"
7
+ version: "3.0"
8
+ domains: ["Agentforce"]
9
+ cliTools:
10
+ - tool: ["python3"]
11
+ semver: ">=3.10.0"
12
+ allowed-tools: Read Write AskUserQuestion Glob Grep
13
+ ---
14
+
15
+ # Designing Agent Persona
16
+
17
+ ## How to Use
18
+
19
+ This skill designs an AI agent persona for Salesforce Agentforce. It walks through four sequenced phases (DRAFT → REFINE → SCORE → ENCODE) and offers five spokes (NAME, FILL OUT, ADJUST, CHECKLIST, WORKSHOP) you can run any time after DRAFT.
20
+
21
+ **What it produces:**
22
+ - A persona document (`persona/[agent-name]/persona.md`) — who the agent is, how it sounds, what it never does
23
+ - A sample dialog (`persona/[agent-name]/sample-dialog.md`) — the persona in action
24
+ - An evaluation report on request (`persona/[agent-name]/evaluation.md`) — 100-point rubric, gap analysis, recommendations
25
+ - A completeness checklist on request (`persona/[agent-name]/checklist.md`) — what's filled in, what's missing
26
+ - A workshop outline on request (`persona/[agent-name]/workshop-outline.md`) — stakeholder questions, dimension cards
27
+ - An encoding artifact on request — valid Agent Script `.agent` file, OR Agentforce Builder field values
28
+
29
+ **Session resumption:** If you stop mid-phase, your progress is preserved in the conversation and can be resumed.
30
+
31
+ ## When to Use This Skill
32
+
33
+ - Designing a new Agentforce agent and need to define its personality before building (greenfield)
34
+ - Auditing an existing `.agent` file's persona consistency (brownfield)
35
+ - Translating brand guidelines into a structured persona
36
+ - Producing a stakeholder workshop outline to gather design input
37
+ - Aligning teams on what an agent should sound like before development
38
+
39
+ **Scope boundary:** This skill defines WHO the agent is. It does not define dialog flows, subagents, actions, routing, or variables — those are agent design (use `agentforce-generate`). The encoding output for Use Case A produces an `.agent` skeleton with placeholders for those structures; the user fills them in.
40
+
41
+ ## Framework Reference
42
+
43
+ Read `references/persona-framework.md` for the full framework. It defines:
44
+
45
+ - **Identity** — 3-5 anchoring adjectives + Negative Identity (≥2 character-level anti-patterns)
46
+ - **14 dimensions** (Personification + the 13 expression dimensions):
47
+ - **Personification** — Talking System / Familiar Thing / Personal Assistant
48
+ - **Register** — Subordinate / Peer / Advisor / Coach
49
+ - **Voice** — Formality, Warmth, Personality Intensity, Reading Level
50
+ - **Tone** — Emotional Coloring, Empathy Level (+ Tone Boundaries, Tone Flex)
51
+ - **Delivery** — Brevity, Humor
52
+ - **Chatting Style** — Emoji, Formatting, Punctuation, Capitalization
53
+ - **Persona Artifacts** — Identity (traits + negative identity), Expression (tone boundaries + never-say + guardrails), Phrasing (phrase book + discourse markers + lexicon)
54
+ - **Tone Flex** — how tone shifts by context (including per-subagent calibration)
55
+ - **Lexicon** — global and per-subagent vocabulary, including immutable terms
56
+ - **Guardrails** — content-level boundaries (e.g., "Don't offer medical advice"), distinct from Never-Say
57
+
58
+ Attributes are ordered by dependency. Identity → Personification → Register → Voice → Tone → Delivery → Chatting Style. Constraint notes recommend natural pairings; any combination is valid.
59
+
60
+ Attribution for the external sources this skill draws on is in `references/attributions.md`.
61
+
62
+ ---
63
+
64
+ ## Pre-DRAFT Triage — Greenfield or Brownfield?
65
+
66
+ **Before anything else,** ask the user which lane they're on. The two lanes diverge significantly downstream.
67
+
68
+ > Welcome. Two ways to use this skill:
69
+ >
70
+ > 1. **Starting fresh** — design a persona from scratch using brand input, audience details, and channel. **Greenfield.**
71
+ > 2. **Auditing an existing agent** — review and improve a `.agent` file you already have. **Brownfield.**
72
+ >
73
+ > Which one?
74
+
75
+ Set a `mode` flag in state: `greenfield` or `brownfield`.
76
+
77
+ **Brownfield triggers:**
78
+ - User uploads a `.agent` file → load via `scripts/parse_agent_yaml.py` (read-only)
79
+ - ADJUST spoke is immediately available (subagents and actions exist)
80
+ - SCORE includes per-subagent and per-action sub-scoring
81
+ - ENCODE produces annotated proposed-new-file + diff summary, never inventing structure
82
+
83
+ **Greenfield triggers:**
84
+ - ENCODE produces a starter `.agent` skeleton with placeholders for subagents/actions/routing
85
+ - ADJUST spoke is initially gated (offered only if user later declares subagents)
86
+
87
+ ---
88
+
89
+ ## Architecture: Phases and Spokes
90
+
91
+ **Phases** are sequenced — order matters. **Spokes** orbit the hub, available any time after DRAFT, in any order. The hub is presented after every phase or spoke exit.
92
+
93
+ ```text
94
+ SEQUENCED PHASES (linear pipeline):
95
+ DRAFT → REFINE → SCORE → ENCODE
96
+ ↑
97
+ (loop back via phases or spokes if SCORE finds gaps)
98
+
99
+ SPOKES (radiate from the HUB; any time after DRAFT):
100
+ ⊙ NAME — pick or confirm the agent's name
101
+ ⊙ FILL OUT — phrase book, never-say, lexicon, immutable content
102
+ ⊙ ADJUST — subagent + action persona calibrations (gated)
103
+ ⊙ CHECKLIST — "What's filled in?" — completeness gap analysis
104
+ ⊙ WORKSHOP — stakeholder workshop outline
105
+ ```
106
+
107
+ The HUB suggests the next default but lets the user pick anything, including re-running the phase or spoke they just exited.
108
+
109
+ ---
110
+
111
+ ## PHASE 1 — DRAFT
112
+
113
+ DRAFT applies "start small": Identity Traits before dimensions. The user can exit DRAFT after the start-small checkpoint and return later via spokes or re-enter DRAFT.
114
+
115
+ ### Step 1: Input
116
+
117
+ Accept any starting input. No detection question — accept whatever the user provides.
118
+
119
+ **Accepted inputs:**
120
+ - Brand guide or tone-of-voice document (PDF, text)
121
+ - Organization URL
122
+ - Prior persona document (persona.md from a previous session)
123
+ - Free-text description (e.g., "a sales coach who talks like Crocodile Dundee")
124
+ - Existing agent system prompt or `.agent` file (brownfield mode)
125
+ - Any combination
126
+
127
+ **If the user provides nothing:**
128
+ > "Share something to get started — a brand guide, a URL, or just describe the agent in your own words."
129
+
130
+ ### Step 2: Context (Essentials)
131
+
132
+ These four are required:
133
+
134
+ 1. **Channel** — pick exactly **one**:
135
+ - Web chat (text)
136
+ - Mobile chat (text)
137
+ - SMS (text — short-form, char-budgeted, no rich text)
138
+ - Email
139
+ - Telephony (voice over phone — voice selection, AI disclosure, formatting suppression)
140
+ - Multimodal-with-audio (chat UI plus agent speaks)
141
+ - Embedded / in-app
142
+ - Other (free-text)
143
+
144
+ Channel constrains Brevity defaults (SMS → Terse, Telephony → Concise, web/mobile chat → Moderate, email → Expansive) and rich-text features. Multi-channel + dynamic personas is a roadmap item — for this version, one channel.
145
+
146
+ 2. **Company / Brand** — extract from input or ask. Who they are, what they do.
147
+ 3. **Audience** — who the agent serves: employees, customers, partners, mixed.
148
+ 4. **≥1 Use case** — drives REFINE's sample dialog. If the user can only name one, that's enough.
149
+
150
+ Conditional context — apply each rule; ask only when its condition fires:
151
+ - **Primary language** — if input does not state or imply the working language, ask (it affects formality norms).
152
+ - **Business goals + success metrics** — if input names no goal or metric, ask for one (it informs proactivity, register, empathy).
153
+ - **Legal/compliance** — if input mentions healthcare, finance, insurance, legal, or other regulated domains, OR contains language that reads like it was written by a legal team: set `regulated_industry = true` and ask about legal/compliance constraints.
154
+
155
+ **Do NOT collect:** subagents, actions, routing structure, or agent name (NAME is its own spoke).
156
+
157
+ **Working title detection:** If the user refers to the agent by a working title in input ("the quoting agent," "Flex 2.0"), capture it as `display_name_placeholder` in state. NAME spoke uses this as a default.
158
+
159
+ **Extraction before asking:** Parse input for context signals before asking. "Design an internal sales coach for Buc-ee's" already answers audience (internal), role (sales coach), and brand. Don't re-ask.
160
+
161
+ ### Step 3: Identity Traits + Negative Identity
162
+
163
+ This step is the start-small anchor. Generate:
164
+ - **Identity Traits** — 3-5 adjectives with behavioral definitions (e.g., "Composed: doesn't escalate emotionally even when the user does")
165
+ - **Negative Identity** — 2-4 character-level anti-patterns ("Not a salesperson: doesn't push, recommends what fits")
166
+
167
+ Identity Traits anchor everything that follows.
168
+
169
+ ### START-SMALL CHECKPOINT (explicit, spoken aloud)
170
+
171
+ After Identity Traits + Negative Identity are locked, **write the persona document to disk as it stands** and announce the off-ramp:
172
+
173
+ > "We have enough to ship a minimal persona. Here's what it has so far:
174
+ >
175
+ > - **Identity:** [traits]
176
+ > - **Negative Identity:** [anti-patterns]
177
+ > - **Channel:** [channel]
178
+ > - **Company / Audience:** [values]
179
+ > - **Use case:** [first use case]
180
+ >
181
+ > Want to keep going through Personification and the rest of the dimensions, or stop here and pick from the hub?"
182
+
183
+ If the user stops here, dimensions get framework defaults derived from Identity + Channel. The persona document is on disk; the user can see exactly what they've got.
184
+
185
+ ### Step 4: Personification (the 14th dimension)
186
+
187
+ Personification slots in right after Identity. It determines whether the rest of the dimensions are doing character work or transactional work.
188
+
189
+ | Position | Description | Pulls |
190
+ |---|---|---|
191
+ | **Talking System** | Functional, predictable, no character. Fades into the background. ATM, ticketing kiosk, transactional service. | Reading Level low; Humor None; Personality Intensity Reserved; Pronouns "the agent" or brand-name only. |
192
+ | **Familiar Thing** | A recognizable category of helper, lightly characterized. "Service Agent," "Coding Assistant." | Personality Intensity Moderate; Pronouns: "I" + name OK. |
193
+ | **Personal Assistant** | A characterized, named agent with a recognizable voice. Talks in first person; identity traits show through. | Personality Intensity Reserved or Bold; Pronouns: "I" + name standard. |
194
+
195
+ Auto-suggest from Identity Traits; the user confirms or overrides.
196
+
197
+ ### Step 5: Remaining Dimensions
198
+
199
+ Walk the dependency chain: Register → Voice (Formality, Warmth, Personality Intensity, Reading Level) → Tone (Emotional Coloring, Empathy Level + Tone Boundaries, Tone Flex) → Delivery (Brevity, Humor) → Chatting Style (Emoji, Formatting, Punctuation, Capitalization).
200
+
201
+ **Brevity defaults are bound to channel** — SMS → Terse, Telephony → Concise, web/mobile chat → Moderate, email → Expansive. Override only when a strong signal warrants.
202
+
203
+ For each dimension:
204
+ 1. Pre-populate from input signals
205
+ 2. Mark confidence (`strong` = strong signal from input; no marker = default)
206
+ 3. Show the full spectrum and the recommended position
207
+
208
+ Generate at the end of Step 5:
209
+ - **Phrase Book** — 2-4 phrases per applicable category (Acknowledgement, Affirmation, Apologies-for-mistakes, Off-Topic Redirect, Welcome, Discourse Markers; conditional: Escalation/Handoff for external, Celebrating Progress for Encouraging coloring, Teaching Moments for Coach register, Humor Examples for Humor ≠ None)
210
+ - **Never-Say List** — ≥5 entries (chatbot filler + register violations + cognitive-processing markers + persona-specific)
211
+ - **Tone Boundaries** — what the agent must never sound like
212
+ - **Tone Flex** — baseline + triggers + shift rules
213
+ - **Global Lexicon** — brand name, product names, industry terms used everywhere. Distinguish editable from immutable.
214
+ - **Guardrails** — content-level boundaries; include when the domain warrants ("Don't offer medical advice"). Distinct from Never-Say.
215
+ - **Values** — include only when the user states them explicitly; never inferred.
216
+
217
+ **Cross-cutting verbatim guardrail:** Never alter content the designer marks as immutable (legal disclaimers, brand-defined terminology). If a phrase book entry or lexicon term conflicts with immutable content, the immutable content wins.
218
+
219
+ ### DRAFT Exit
220
+
221
+ Persona document is on disk. State carries:
222
+ - Mode (greenfield/brownfield)
223
+ - Channel
224
+ - Company, Audience, Use cases
225
+ - Identity Traits, Negative Identity
226
+ - Personification + 13 dimensions (filled or defaulted)
227
+ - Confidence annotations
228
+ - Phrase Book, Never-Say, Tone Boundaries, Tone Flex, Lexicon
229
+ - Guardrails (if any), Values (if explicit), Immutable content blocks
230
+ - `display_name_placeholder` (working title from input, if detected)
231
+ - `name_decision: pending`
232
+
233
+ Present the HUB.
234
+
235
+ ---
236
+
237
+ ## PHASE 2 — REFINE
238
+
239
+ Generate sample dialog and let the user iterate.
240
+
241
+ ### Sample Dialog Generation
242
+
243
+ Use the **Use cases captured in DRAFT step 2** as scenario seeds. Generate 3-5 exchanges that:
244
+ - Demonstrate the persona in action (word choice, tone, brevity, humor, formatting)
245
+ - Include at least one "interesting" turn — error, clarification, emotional moment — not just happy path
246
+ - Make the persona's impact obvious — none of these agents say "Hello! How can I help you today?"
247
+
248
+ For voice/telephony channels, start with the welcome message including AI disclosure so the user sees it in context.
249
+
250
+ ### Refinement Loop
251
+
252
+ After presenting the sample dialog:
253
+
254
+ > "Tell me what to change — 'make it warmer,' 'drop the humor,' 'don't say that' — or pick:
255
+ > - Looks good — back to the hub
256
+ > - Try a different scenario
257
+ > - (free-text always available)"
258
+
259
+ When the user types a natural-language adjustment, apply it via the mapping table in **`references/refinement-mappings.md`** (e.g., "warmer" → Warmth +1, also consider Empathy +1), regenerate the sample with the change held single-axis, and re-present. When ambiguous, apply the primary mapping and narrate the change so the user can correct.
260
+
261
+ **Diff-Based Regeneration** — After a single-dimension change:
262
+ 1. Show the change explicitly: "Warmth: Warm → Cool"
263
+ 2. Hold ALL unchanged dimensions constant
264
+ 3. Regenerate sample dialog varying only the changed dimension
265
+ 4. Narrate what shifted
266
+
267
+ **Contrasting Response Comparison** — If the user asks ("show me two ways this agent could respond"), generate one user utterance from a captured use case + two contrasting agent responses varying along **one dimension or trait** (not multiple axes). Update state from the user's choice.
268
+
269
+ ### REFINE Exit
270
+
271
+ Sample dialog written to `persona/[agent-name]/sample-dialog.md`. Persona document updated if dimensions shifted. Present the HUB.
272
+
273
+ ---
274
+
275
+ ## PHASE 3 — SCORE — "How good is it?"
276
+
277
+ Apply the 100-point rubric. Two entry points:
278
+ 1. **Designed persona** (state from DRAFT/REFINE)
279
+ 2. **Existing agent instructions** (brownfield mode — `.agent` file, system prompt, topic instructions, or combination)
280
+
281
+ **Key principle:** Score the substance, not whether they used the framework's vocabulary. "Personality guidelines" = Identity. "Communication rules" = dimensions. "Banned phrases" = Never-Say. Map first, then score.
282
+
283
+ ### Brownfield Extraction
284
+
285
+ For brownfield mode, parse the `.agent` file via `scripts/parse_agent_yaml.py` (read-only). Walk:
286
+ - `system.instructions`, `system.messages.welcome`, `system.messages.error`
287
+ - Each subagent: name, instructions, reasoning_instructions, system_override
288
+ - Each action: name, progress_indicator_message
289
+
290
+ Map by substance, not label. Mark inferred mappings: "inferred — [source label]." Absence of a framework concept ≠ zero score; score what's present. The common-label-mapping table is in `references/scoring-rubric.md`.
291
+
292
+ ### 100-Point Rubric
293
+
294
+ Apply the 100-point rubric in **`references/scoring-rubric.md`** — 11 scoring categories, the brownfield per-subagent / per-action sub-scoring rules, and the percentage bands (90-100 production-ready, 75-89 strong foundation, 50-74 needs revision, <50 significant gaps). Score the substance, not the vocabulary.
295
+
296
+ ### Recommendations (required output)
297
+
298
+ For each gap surfaced:
299
+ - Cite the framework section the gap relates to
300
+ - Provide a specific, actionable fix
301
+ - For brownfield: cite the location in the source file (subagent name, line range)
302
+
303
+ ### SCORE Exit
304
+
305
+ Evaluation written to `persona/[agent-name]/evaluation.md`. Total presented as percentage (90-100 production-ready, 75-89 strong foundation, 50-74 needs revision, <50 significant gaps). Present the HUB; suggested next is FILL OUT or ADJUST if gaps exist, ENCODE if scores are passing.
306
+
307
+ ---
308
+
309
+ ## PHASE 4 — ENCODE
310
+
311
+ Generate valid encoding output for Agent Script (default) or Agentforce Builder.
312
+
313
+ ### Pre-flight Check: NAME
314
+
315
+ If `name_decision` is still `pending`, **pause ENCODE and route the user to the NAME spoke first.** Reason: Agent Script's `config.agent_label` is required; encoding with a placeholder silently inherits the working title (e.g., "the quoting agent"), which the user may not notice before deploy.
316
+
317
+ After NAME completes, ENCODE resumes.
318
+
319
+ ### Decision Tree
320
+
321
+ ```text
322
+ 1. Confirm channel (single value from state).
323
+ 2. Confirm authoring tool:
324
+ - Greenfield: default = Agent Script.
325
+ → "Encode for Agent Script (default), or switch to Agentforce Builder?"
326
+ - Brownfield, source is Agent Script: default = Agent Script.
327
+ → "Stay on Agent Script (recommended)?"
328
+ - Brownfield, source is Builder: default = Builder, but offer the upgrade path.
329
+ → "Stay on Builder, or switch to Agent Script (recommended for per-subagent encoding granularity)?"
330
+ 3. Generate comprehensive persona block (always):
331
+ - system.instructions — full persona content
332
+ - system.messages.welcome — in-character welcome
333
+ - system.messages.error — in-character error
334
+ 4. Subagent-level encoding? Three answers:
335
+ - "I have subagents defined" → enumerate them, generate per-subagent reasoning.instructions
336
+ - "I don't have subagents yet" → skip; output is global-only (Use Case A)
337
+ - "Generate examples" → infer 2-3 plausible subagents, label as examples
338
+ 5. Action-level encoding? Same three answers; generates progress_indicator_message per action.
339
+ 6. Voice encoding? Only if channel is telephony or multimodal-with-audio.
340
+ - Voice recommendations from references/voice-catalog.json
341
+ - Per-voice fine-tuning starting points (Speed, Stability, Similarity)
342
+ - AI disclosure in welcome message
343
+ - Pronunciation dictionary for brand terms
344
+ 7. Diff (brownfield only): annotated proposed-new-file + diff summary.
345
+ ```
346
+
347
+ The skill **never invents** subagents, actions, variables, or routing. Architecture stays the user's call.
348
+
349
+ ### Output by authoring tool
350
+
351
+ Read `references/persona-encoding-guide.md` for the full field-by-field guide (block order, formatting rules, Builder field char limits, `progress_indicator_message` placement, channel adjustments). Operational essentials:
352
+
353
+ - **Agent Script (`.agent`)** — valid Agent Script syntax per `forcedotcom/sf-skills/skills/developing-agentforce/`. Greenfield: emit a minimal valid skeleton (`system` with full persona + in-character welcome/error, `config`, `language`, `start_agent` stub, one placeholder `subagent`) — a working starting point the user fleshes out; never invent subagents/actions/variables/routing. Brownfield: preserve the existing structure and modify only persona-bearing fields (`system.instructions`, `system.messages.welcome`/`error`, per-subagent `system:`/`reasoning.instructions:`, per-action `progress_indicator_message:`). Write to `persona/[agent-name]/[agent-name].agent`.
354
+ - **Agentforce Builder** — populate the config fields (Name, Role = functional summary only, Company, Welcome, Error), the global persona block, per-subagent instructions, and per-action loading text; recommend the Tone dropdown from Register + Formality; apply voice/SMS channel adjustments. Write to `persona/[agent-name]/builder-fields.md`.
355
+
356
+ ### Brownfield Diff Output
357
+
358
+ When source was a `.agent` file, generate two artifacts:
359
+ 1. **`persona/[agent-name]/persona-diff.md`** — annotated proposed-new-file. Each persona-bearing field shown with the proposed new content + an inline rationale ("changed because: tone-flex called for empathy bump in escalation").
360
+ 2. **Diff summary** — companion section listing what changed and why, scoped to persona only. The user can run a real diff tool against the source if they want a unified view; this artifact is for human review.
361
+
362
+ The diff explicitly excludes routing, subagent structure, action contracts.
363
+
364
+ ### ENCODE Exit
365
+
366
+ Encoding artifact written. Present the HUB.
367
+
368
+ ---
369
+
370
+ ## SPOKES
371
+
372
+ Spokes are accessory work, available any time after DRAFT, in any order, repeatable.
373
+
374
+ ### ⊙ NAME
375
+
376
+ > "Does this agent get a name? Some agents work better unnamed (transactional services, talking systems, agents whose identity is the brand itself). Others benefit from a distinct name. What's right for this one?"
377
+
378
+ If a working title was detected in DRAFT (`display_name_placeholder` set):
379
+ > "I picked up '[working title]' from your input. Confirm it, or pick from suggestions?"
380
+
381
+ If yes (named):
382
+ - **Talking System** → if user still wants a name, suggest brand-aligned (e.g., "Acme Service Agent")
383
+ - **Familiar Thing** → 2-3 short candidates (functional, easy to say)
384
+ - **Personal Assistant** → up to 3 candidates that distill the identity
385
+
386
+ Apply naming principles from the framework:
387
+ - Descriptive ("Service Agent") • Evocative ("Striker") • Sticky ("Clover") • Culturally aligned ("Bug Squasher") • Brand-aligned ("Lex") • Easy to say (passes the radio test) • Obviously artificial ("Song," "Cortana") • Functional ("Scripty") • Abstract ("Koda," "Lumi") • Null (deliberate non-name)
388
+ - **Anti-pattern:** API-style names like `Tech_Assist_Agent_v2_Internal_Test` are NOT persona names.
389
+
390
+ If no (unnamed): set `name_decision: unnamed` or `brand-as-name`. Display name in encoding becomes either the brand name or null per user choice.
391
+
392
+ State update: `name_decision` ∈ {named, unnamed, brand-as-name}. Display name populated.
393
+
394
+ ### ⊙ FILL OUT
395
+
396
+ > "You're in FILL OUT. What would you like to work on?
397
+ > - Phrase book additions
398
+ > - Never-say expansions
399
+ > - Lexicon additions (global or per-subagent)
400
+ > - Immutable content marking
401
+ > - I'm done with this spoke
402
+ > (Pick one; you'll come back here after each, or pick multiple by listing.)"
403
+
404
+ For each sub-activity, present current state and gather additions/edits. Update the persona document on exit.
405
+
406
+ ### ⊙ ADJUST
407
+
408
+ **Gated:** only offered when subagents or actions exist (declared by user, or detected from a source `.agent` file in brownfield mode).
409
+
410
+ > "You're in ADJUST. What would you like to work on?
411
+ > - Per-subagent persona adjustment (e.g., 'in escalation subagent, drop humor to zero')
412
+ > - Per-action loading text (in voice)
413
+ > - I'm done with this spoke"
414
+
415
+ Per-subagent adjustments encode as Agent Script `system:` overrides or `reasoning.instructions` calibrations.
416
+ Per-action loading text encodes as `progress_indicator_message` strings.
417
+
418
+ ### ⊙ CHECKLIST — "What's filled in?"
419
+
420
+ Reads the persona document; produces a markdown checklist marking each element as `[+]` present, `[-]` missing, or — not applicable. Definitions pulled directly from the framework.
421
+
422
+ Output template at `assets/checklist-template.md`. Each suggested next step is **quotable** (e.g., "go to NAME", "go to FILL OUT, add Lexicon") so the user can paste back rather than retype.
423
+
424
+ Useful before SCORE for a quick gap scan, and before ENCODE for a readiness check.
425
+
426
+ Write to `persona/[agent-name]/checklist.md`.
427
+
428
+ ### ⊙ WORKSHOP
429
+
430
+ Generate a stakeholder-facing outline for a customer's internal workshop. Output supports FigJam / whiteboard formats.
431
+
432
+ **Question generation policy** (read `references/workshop-question-policy.md` for the full rules):
433
+ - High-leverage first (Identity, Personification, Register).
434
+ - Skip what's already known. If the brand input clearly answers a dimension, don't ask.
435
+ - Three styles: **validate** ("we assumed X — confirm or push back"), **choose between** (two genuinely different positions), **open spectrum** (place the agent on this line).
436
+
437
+ Use scenario seeds from `references/workshop-scenario-seeds.md` for would-you-rather pairs.
438
+
439
+ Output template at `assets/workshop-outline-template.md`. Output to `persona/[agent-name]/workshop-outline.md`.
440
+
441
+ **Quality over coverage.** Better to ask 4 great questions than 12 generic ones.
442
+
443
+ ---
444
+
445
+ ## HUB
446
+
447
+ After every phase or spoke exit, present the HUB. **Not a flat menu** — the suggested next step is rendered as a labeled primary recommendation with rationale, above the rest.
448
+
449
+ ```text
450
+ HUB
451
+
452
+ Suggested next:
453
+ → [SUGGESTED] — [one-line rationale grounded in current state]
454
+
455
+ Or do something else:
456
+ Phases:
457
+ → REFINE [state-aware annotation, e.g., "re-run; iterate on dialog"]
458
+ → SCORE ["how good is it?"]
459
+ → ENCODE [gating note if name_decision pending]
460
+ Spokes:
461
+ ⊙ NAME [annotation: "name_decision pending" or "current: [name]"]
462
+ ⊙ FILL OUT [annotation: what's empty, e.g., "Lexicon empty"]
463
+ ⊙ ADJUST [annotation: gated reason if not available]
464
+ ⊙ CHECKLIST ["what's filled in?"]
465
+ ⊙ WORKSHOP ["stakeholder workshop outline"]
466
+ Exit:
467
+ → I'm done
468
+ ```
469
+
470
+ **Suggestion logic:**
471
+ - Just exited DRAFT → suggest REFINE
472
+ - Just exited REFINE → suggest SCORE
473
+ - Just exited SCORE with passing score → suggest ENCODE
474
+ - Just exited SCORE with failing score → suggest FILL OUT or ADJUST (whichever has the largest surfaced gaps)
475
+ - `name_decision: pending` and ENCODE was attempted → suggest NAME, then resume ENCODE
476
+ - After every phase/spoke → user can always pick anything, including the one just exited
477
+
478
+ ---
479
+
480
+ ## Output Files
481
+
482
+ The skill produces:
483
+
484
+ 1. **Persona document** (`persona/[agent-name]/persona.md`) — DRAFT. Updated by other phases/spokes.
485
+ 2. **Sample dialog** (`persona/[agent-name]/sample-dialog.md`) — REFINE.
486
+ 3. **Evaluation report** (`persona/[agent-name]/evaluation.md`) — SCORE.
487
+ 4. **Encoding artifact** (`persona/[agent-name]/[agent-name].agent` for Agent Script, OR `persona/[agent-name]/builder-fields.md` for Builder) — ENCODE.
488
+ 5. **Persona diff** (`persona/[agent-name]/persona-diff.md`) — ENCODE in brownfield mode only.
489
+ 6. **Checklist** (`persona/[agent-name]/checklist.md`) — CHECKLIST spoke.
490
+ 7. **Workshop outline** (`persona/[agent-name]/workshop-outline.md`) — WORKSHOP spoke.
491
+
492
+ `persona/` is gitignored at the skill repo level so dogfooding the skill with `cwd` inside this checkout doesn't leak outputs into git. In any other working directory, the user is responsible for whatever gitignore rules they want to apply.
493
+
494
+ ---
495
+
496
+ ## Interaction Design Notes
497
+
498
+ Cross-surface UX guidelines (output-before-questions, batching independent questions, compact
499
+ formats, progress awareness, confidence callouts) are in **`references/interaction-design-notes.md`**. Apply them across all surfaces — CLI, TUI, web, IDE.
500
+
501
+ ---
502
+
503
+ ## Credits
504
+
505
+ This skill draws on published, openly-licensed conversation-design work; see `references/attributions.md`.
@@ -0,0 +1,100 @@
1
+ ---
2
+ version: "1.0.0"
3
+ date: 2026-05-15
4
+ ---
5
+
6
+ # Persona Completeness Checklist — {{AGENT_NAME}}
7
+
8
+ > Date: {{DATE}}
9
+ > Generated from: `{{agent-name}}-persona.md`
10
+ > Mode: {{greenfield | brownfield}}
11
+
12
+ **Legend:** `[+]` present · `[-]` missing or required-but-empty · `—` not applicable / optional and not provided
13
+
14
+ One-line definitions are pulled from `references/persona-framework.md`. The checklist is the framework's coverage map applied to this persona — not opinions about quality. (For quality, run SCORE.)
15
+
16
+ ---
17
+
18
+ ## Identity (anchor)
19
+
20
+ - {{[+] | [-]}} **Identity Traits** — 3-5 adjectives that anchor every other decision.
21
+ - {{[+] | [-]}} **Negative Identity** — Character-level anti-patterns ("not a salesperson"). Auto-generates from Identity Traits — re-run DRAFT step 3 if missing.
22
+ - {{— | [+]}} **Values** — *(optional, explicit-input only)* What the agent believes; worldview and motivational core.
23
+
24
+ ## Context
25
+
26
+ - {{[+] | [-]}} **Channel** — Single channel choice (web chat, SMS, telephony, etc.). Constrains Brevity defaults and rich-text features.
27
+ - {{[+] | [-]}} **Company / Brand** — Who the organization is.
28
+ - {{[+] | [-]}} **Audience** — employees / customers / partners / mixed.
29
+ - {{[+] | [-]}} **Use case(s)** — at least one. Drives REFINE's sample dialog scenarios; the dialog will be weak without this.
30
+ - {{— | [+]}} **Business goals + success metrics** — *(optional)* What the agent achieves and how success is measured.
31
+ - {{— | [+]}} **Regulated industry flag** — *(optional)* Triggers stricter handling of immutable content.
32
+
33
+ ## Personification + Naming
34
+
35
+ - {{[+] | [-]}} **Personification** — Talking System / Familiar Thing / Personal Assistant. The first dimension on the Identity-anchored chain.
36
+ - {{[+] | [-]}} **Name decision** — named / unnamed / brand-as-name. ENCODE blocks if this is `pending`.
37
+ - {{[+] | — | [-]}} **Display name** — Required if `name_decision = named`.
38
+
39
+ ## Dimensions (13)
40
+
41
+ - {{[+] | [-]}} **Register** — Subordinate / Peer / Advisor / Coach.
42
+ - {{[+] | [-]}} **Formality** — Casual / Informal / Professional / Formal.
43
+ - {{[+] | [-]}} **Warmth** — Cool / Neutral / Warm / Bright / Radiant.
44
+ - {{[+] | [-]}} **Personality Intensity** — Reserved / Moderate / Bold.
45
+ - {{[+] | [-]}} **Reading Level** — Plain / Conversational / Mid / Advanced (or Match).
46
+ - {{[+] | [-]}} **Emotional Coloring** — Blunt / Neutral / Encouraging / Clinical / etc.
47
+ - {{[+] | [-]}} **Empathy Level** — Minimal / Moderate / Attuned.
48
+ - {{[+] | [-]}} **Brevity** — Terse / Concise / Moderate / Expansive. *(Default bound to channel.)*
49
+ - {{[+] | [-]}} **Humor** — None / Dry / Light / Playful.
50
+ - {{[+] | [-]}} **Emoji** — None / Functional / Expressive.
51
+ - {{[+] | [-]}} **Formatting** — Plain / Selective / Heavy.
52
+ - {{[+] | [-]}} **Punctuation** — Conservative / Standard / Expressive.
53
+ - {{[+] | [-]}} **Capitalization** — Standard / Casual.
54
+
55
+ ## Verbal fingerprint
56
+
57
+ - {{[+] | [-]}} **Phrase Book** — Situation-keyed sample phrases (acknowledgements, redirects, etc.). 2-4 per applicable category. *Categories filled: {{N}} of {{Total applicable}}.*
58
+ - {{[+] | [-]}} **Never-Say List** — Phrase-level prohibitions (≥5 entries). *Entries: {{N}}.*
59
+ - {{[+] | [-]}} **Discourse Markers** — Conversational connectors ("So," "Right," "Here's the thing").
60
+ - {{[+] | [-]}} **Lexicon (global)** — Brand and domain vocabulary used everywhere.
61
+ - {{— | [+]}} **Lexicon (per-subagent)** — *(brownfield or when subagents declared)* Subagent-specific vocabulary.
62
+ - {{— | [+]}} **Immutable content** — *(when domain warrants)* Legal/brand-defined content preserved verbatim.
63
+
64
+ ## Boundaries
65
+
66
+ - {{[+] | [-]}} **Tone Boundaries** — Anti-sounds ("never sound apologetic"). Auto-generated from Identity.
67
+ - {{[+] | [-]}} **Tone Flex** — Triggers + shift directions + magnitudes (system state, content sensitivity, etc.).
68
+ - {{— | [+]}} **Guardrails** — *(optional)* Content-level boundaries ("Don't offer medical advice"). Distinct from Never-Say. Only relevant when domain is regulated or brand-bounded.
69
+
70
+ ## Subagent / action calibrations *(only if applicable)*
71
+
72
+ - {{— | [+]}} **Per-subagent persona adjustments** — *(only when subagents exist)* e.g., "drop humor to zero in escalation."
73
+ - {{— | [+]}} **Per-action loading text** — *(only when actions exist + voice channel)* `progress_indicator_message` strings.
74
+
75
+ ## Channel-specific
76
+
77
+ - {{— | [+]}} **Voice selection** — *(telephony or multimodal-with-audio)* Voice from catalog with fine-tuning starting points.
78
+ - {{— | [+]}} **AI disclosure in welcome** — *(telephony)* Required for trust and compliance.
79
+ - {{— | [+]}} **Pronunciation dictionary** — *(voice channels, when brand terms have non-obvious pronunciation)*.
80
+
81
+ ---
82
+
83
+ ## Summary
84
+
85
+ - **{{N}} of {{Total}}** required elements present.
86
+ - **{{Optional applicable}} of {{Optional total}}** optional-but-applicable elements present.
87
+
88
+ ### Suggested next steps
89
+
90
+ (Each is **quotable** — paste any of these back to the skill to take the action.)
91
+
92
+ 1. **"go to NAME"** — *(if name_decision pending)*
93
+ 2. **"go to FILL OUT, add Lexicon"** — *(if Lexicon empty)*
94
+ 3. **"go to FILL OUT, expand Phrase Book"** — *(if Phrase Book has fewer than 2 phrases per applicable category)*
95
+ 4. **"go back to DRAFT, capture use case"** — *(if no use case captured)*
96
+ 5. **"go to ADJUST"** — *(if subagents declared but not calibrated)*
97
+ 6. **"run SCORE"** — *(if all required elements [+] and you want a quality assessment)*
98
+ 7. **"run ENCODE"** — *(if all required elements [+] and SCORE is passing)*
99
+
100
+ Pick what's most leveraged for your next move. The hub will route you.