@prismer/runtime 2.0.6 → 2.0.8

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 (207) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/built-in-skills/agent-coordination/SKILL.md +235 -0
  3. package/built-in-skills/agent-meta/SKILL.md +52 -0
  4. package/built-in-skills/assets/SKILL.md +131 -0
  5. package/built-in-skills/canvas-design/LICENSE.txt +202 -0
  6. package/built-in-skills/canvas-design/SKILL.md +156 -0
  7. package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  8. package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  9. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  10. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  11. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  12. package/built-in-skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  13. package/built-in-skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  14. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  15. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  16. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  17. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  18. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  19. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  20. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  21. package/built-in-skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  22. package/built-in-skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  23. package/built-in-skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  24. package/built-in-skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  25. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  26. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  27. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  28. package/built-in-skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  29. package/built-in-skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  30. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  31. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  32. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  33. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  34. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  35. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  36. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  37. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  38. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  39. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  40. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  41. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  42. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  43. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  44. package/built-in-skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  45. package/built-in-skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  46. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  47. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  48. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  49. package/built-in-skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  50. package/built-in-skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  51. package/built-in-skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  52. package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  53. package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  54. package/built-in-skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  55. package/built-in-skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  56. package/built-in-skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  57. package/built-in-skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  58. package/built-in-skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  59. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  60. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  61. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  62. package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  63. package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  64. package/built-in-skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  65. package/built-in-skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  66. package/built-in-skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  67. package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  68. package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  69. package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  70. package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  71. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  72. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  73. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  74. package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  75. package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  76. package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  77. package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  78. package/built-in-skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  79. package/built-in-skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  80. package/built-in-skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  81. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  82. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  83. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  84. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  85. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  86. package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  87. package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  88. package/built-in-skills/claim-agent-ownership/SKILL.md +254 -0
  89. package/built-in-skills/claude-api/LICENSE.txt +202 -0
  90. package/built-in-skills/claude-api/SKILL.md +324 -0
  91. package/built-in-skills/claude-api/csharp/claude-api.md +402 -0
  92. package/built-in-skills/claude-api/curl/examples.md +216 -0
  93. package/built-in-skills/claude-api/curl/managed-agents.md +336 -0
  94. package/built-in-skills/claude-api/go/claude-api.md +421 -0
  95. package/built-in-skills/claude-api/go/managed-agents/README.md +561 -0
  96. package/built-in-skills/claude-api/java/claude-api.md +432 -0
  97. package/built-in-skills/claude-api/java/managed-agents/README.md +442 -0
  98. package/built-in-skills/claude-api/php/claude-api.md +375 -0
  99. package/built-in-skills/claude-api/php/managed-agents/README.md +435 -0
  100. package/built-in-skills/claude-api/python/claude-api/README.md +420 -0
  101. package/built-in-skills/claude-api/python/claude-api/batches.md +185 -0
  102. package/built-in-skills/claude-api/python/claude-api/files-api.md +165 -0
  103. package/built-in-skills/claude-api/python/claude-api/streaming.md +162 -0
  104. package/built-in-skills/claude-api/python/claude-api/tool-use.md +590 -0
  105. package/built-in-skills/claude-api/python/managed-agents/README.md +332 -0
  106. package/built-in-skills/claude-api/ruby/claude-api.md +113 -0
  107. package/built-in-skills/claude-api/ruby/managed-agents/README.md +389 -0
  108. package/built-in-skills/claude-api/shared/agent-design.md +101 -0
  109. package/built-in-skills/claude-api/shared/error-codes.md +213 -0
  110. package/built-in-skills/claude-api/shared/live-sources.md +135 -0
  111. package/built-in-skills/claude-api/shared/managed-agents-api-reference.md +378 -0
  112. package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
  113. package/built-in-skills/claude-api/shared/managed-agents-core.md +238 -0
  114. package/built-in-skills/claude-api/shared/managed-agents-environments.md +215 -0
  115. package/built-in-skills/claude-api/shared/managed-agents-events.md +195 -0
  116. package/built-in-skills/claude-api/shared/managed-agents-memory.md +197 -0
  117. package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +99 -0
  118. package/built-in-skills/claude-api/shared/managed-agents-onboarding.md +114 -0
  119. package/built-in-skills/claude-api/shared/managed-agents-outcomes.md +106 -0
  120. package/built-in-skills/claude-api/shared/managed-agents-overview.md +68 -0
  121. package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
  122. package/built-in-skills/claude-api/shared/managed-agents-tools.md +321 -0
  123. package/built-in-skills/claude-api/shared/managed-agents-webhooks.md +110 -0
  124. package/built-in-skills/claude-api/shared/model-migration.md +779 -0
  125. package/built-in-skills/claude-api/shared/models.md +121 -0
  126. package/built-in-skills/claude-api/shared/prompt-caching.md +171 -0
  127. package/built-in-skills/claude-api/shared/tool-use-concepts.md +327 -0
  128. package/built-in-skills/claude-api/typescript/claude-api/README.md +333 -0
  129. package/built-in-skills/claude-api/typescript/claude-api/batches.md +106 -0
  130. package/built-in-skills/claude-api/typescript/claude-api/files-api.md +98 -0
  131. package/built-in-skills/claude-api/typescript/claude-api/streaming.md +178 -0
  132. package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +527 -0
  133. package/built-in-skills/claude-api/typescript/managed-agents/README.md +359 -0
  134. package/built-in-skills/doc-coauthoring/SKILL.md +375 -0
  135. package/built-in-skills/frontend-design/LICENSE.txt +177 -0
  136. package/built-in-skills/frontend-design/SKILL.md +42 -0
  137. package/built-in-skills/human-approval/SKILL.md +114 -0
  138. package/built-in-skills/image-generate/SKILL.md +327 -0
  139. package/built-in-skills/ingest/SKILL.md +105 -0
  140. package/built-in-skills/internal-comms/LICENSE.txt +202 -0
  141. package/built-in-skills/internal-comms/SKILL.md +32 -0
  142. package/built-in-skills/internal-comms/examples/3p-updates.md +47 -0
  143. package/built-in-skills/internal-comms/examples/company-newsletter.md +65 -0
  144. package/built-in-skills/internal-comms/examples/faq-answers.md +30 -0
  145. package/built-in-skills/internal-comms/examples/general-comms.md +16 -0
  146. package/built-in-skills/liteparse/SKILL.md +156 -0
  147. package/built-in-skills/mcp-builder/LICENSE.txt +202 -0
  148. package/built-in-skills/mcp-builder/SKILL.md +236 -0
  149. package/built-in-skills/mcp-builder/reference/evaluation.md +602 -0
  150. package/built-in-skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  151. package/built-in-skills/mcp-builder/reference/node_mcp_server.md +970 -0
  152. package/built-in-skills/mcp-builder/reference/python_mcp_server.md +719 -0
  153. package/built-in-skills/mcp-builder/scripts/connections.py +151 -0
  154. package/built-in-skills/mcp-builder/scripts/evaluation.py +373 -0
  155. package/built-in-skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  156. package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -0
  157. package/built-in-skills/memory/SKILL.md +106 -0
  158. package/built-in-skills/memory-curation/SKILL.md +135 -0
  159. package/built-in-skills/office-artifacts/SKILL.md +198 -0
  160. package/built-in-skills/prismer-im-collab/SKILL.md +148 -0
  161. package/built-in-skills/skill-authoring/SKILL.md +124 -0
  162. package/built-in-skills/skill-authoring/skill.json +74 -0
  163. package/built-in-skills/skill-creator/LICENSE.txt +202 -0
  164. package/built-in-skills/skill-creator/SKILL.md +485 -0
  165. package/built-in-skills/skill-creator/agents/analyzer.md +274 -0
  166. package/built-in-skills/skill-creator/agents/comparator.md +202 -0
  167. package/built-in-skills/skill-creator/agents/grader.md +223 -0
  168. package/built-in-skills/skill-creator/assets/eval_review.html +146 -0
  169. package/built-in-skills/skill-creator/eval-viewer/generate_review.py +471 -0
  170. package/built-in-skills/skill-creator/eval-viewer/viewer.html +1325 -0
  171. package/built-in-skills/skill-creator/references/schemas.md +430 -0
  172. package/built-in-skills/skill-creator/scripts/__init__.py +0 -0
  173. package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  174. package/built-in-skills/skill-creator/scripts/generate_report.py +326 -0
  175. package/built-in-skills/skill-creator/scripts/improve_description.py +247 -0
  176. package/built-in-skills/skill-creator/scripts/package_skill.py +136 -0
  177. package/built-in-skills/skill-creator/scripts/quick_validate.py +103 -0
  178. package/built-in-skills/skill-creator/scripts/run_eval.py +310 -0
  179. package/built-in-skills/skill-creator/scripts/run_loop.py +328 -0
  180. package/built-in-skills/skill-creator/scripts/utils.py +47 -0
  181. package/built-in-skills/slack-gif-creator/LICENSE.txt +202 -0
  182. package/built-in-skills/slack-gif-creator/SKILL.md +271 -0
  183. package/built-in-skills/slack-gif-creator/core/easing.py +234 -0
  184. package/built-in-skills/slack-gif-creator/core/frame_composer.py +176 -0
  185. package/built-in-skills/slack-gif-creator/core/gif_builder.py +269 -0
  186. package/built-in-skills/slack-gif-creator/core/validators.py +136 -0
  187. package/built-in-skills/slack-gif-creator/requirements.txt +4 -0
  188. package/built-in-skills/tasks/SKILL.md +398 -0
  189. package/built-in-skills/team/SKILL.md +76 -0
  190. package/built-in-skills/web-artifacts-builder/LICENSE.txt +202 -0
  191. package/built-in-skills/web-artifacts-builder/SKILL.md +104 -0
  192. package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  193. package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +334 -0
  194. package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  195. package/built-in-skills/webapp-testing/LICENSE.txt +202 -0
  196. package/built-in-skills/webapp-testing/SKILL.md +96 -0
  197. package/built-in-skills/webapp-testing/examples/console_logging.py +35 -0
  198. package/built-in-skills/webapp-testing/examples/element_discovery.py +40 -0
  199. package/built-in-skills/webapp-testing/examples/static_html_automation.py +33 -0
  200. package/built-in-skills/webapp-testing/scripts/with_server.py +106 -0
  201. package/dist/cli.cjs +10239 -3309
  202. package/dist/cli.js +10111 -3183
  203. package/dist/index.cjs +11275 -4344
  204. package/dist/index.d.cts +932 -43
  205. package/dist/index.d.ts +932 -43
  206. package/dist/index.js +13087 -6158
  207. package/package.json +4 -2
@@ -0,0 +1,398 @@
1
+ ---
2
+ name: tasks
3
+ description: Manage Prismer workspace tasks across the full Kanban lifecycle — create, list, inspect, update, complete, approve, reject, cancel. Use whenever the user asks to add a card to the board, dispatch work to another agent, track progress, or move a task between states. Executes via the `cloud task` CLI.
4
+ ---
5
+
6
+ # Tasks
7
+
8
+ Use this skill to drive the **workspace Kanban** end-to-end. Tasks are durable board items with owner, priority, schedule, and conversation linkage. Every operation goes through the `cloud task` CLI — never reply that a task was created/moved/completed unless the command actually returned a task ID and status.
9
+
10
+ ## ⛔ Hard rules — delegation discipline
11
+
12
+ When the user asks you to **assign / delegate / hand off** work to ANOTHER agent (e.g. "create kanban tasks and assign to @research-agent", "give this to Bob"):
13
+
14
+ 1. **Call `cloud task create --assignee-name <agent>` (or `--assignee-id`).** That is the ONLY legitimate delegation path. The cloud routes the task to the target agent's daemon, and the target agent picks it up via its own dispatch loop.
15
+ 2. **STOP** as soon as `cloud task create` returns task IDs. Reply to the user with the IDs / titles. **Do not** invoke any other tool to "also do the research yourself" or "make sure it gets done".
16
+ 3. **NEVER use a generic `Task` / subagent / fan-out / parallel-agent tool to silently do the work in-process.** That bypasses the kanban board, the assignee never sees the card, the user's mental model ("an agent is working on this") is violated, and the delegation is fake. If you find yourself reaching for any tool whose name is "Task", "Subagent", "Worker", "Fanout", "ParallelAgents", or anything else that spawns an inline executor — **stop and re-read this section**.
17
+ 4. The phrase **"I've also started working on these"** after a `cloud task create` is a red flag that you violated rule 3. The correct phrase is **"Tasks created and assigned. @research-agent will pick up the cards."**
18
+
19
+ This is non-negotiable. Bypassing it makes the agent ecosystem look broken even when the cards are correct, because the user sees the answer come back too fast and notices that the supposed assignee was never @-mentioned in the conversation.
20
+
21
+ ## When to use
22
+
23
+ - The user asks to **create**, **assign**, **schedule**, or **track** work ("add to kanban", "give Bob this task", "remind me to ship X by Friday").
24
+ - You need to **delegate** a concrete deliverable to another agent. **(See ⛔ rules above.)**
25
+ - A long-running objective should persist as a workspace **goal** (`kind=goal`).
26
+ - The user asks about board state ("what's pending", "show me Bob's tasks", "what's blocking the release").
27
+ - A task already on the board needs to be **updated** (priority change, retitle, attach context), **completed**, **approved/rejected** in review, or **cancelled**.
28
+ - The task output is a document / deck / spreadsheet / PDF / report. In that
29
+ case use the `office-artifacts` skill before completion; a prose-only result
30
+ is not enough for file-deliverable tasks.
31
+
32
+ ## Lifecycle
33
+
34
+ ```
35
+ pending → assigned → running → review → completed | failed | cancelled
36
+
37
+ approved / rejected (review only)
38
+ ```
39
+
40
+ A `work_item` shows on the Kanban; a `goal` shows on the Goals lane. Filter at list time with `--kind work_item,goal` if you only want board projection.
41
+
42
+ ## Permission model (v2.0 — `release 200` state machine)
43
+
44
+ The platform enforces a **trust-tier × transition matrix** (see `docs/release200/15-task-state-machine-and-kanban.md` §5.2). Each transition's `allowed` actors are part of the contract; calling outside the matrix returns `403 forbidden` with `{ actorTier, requiredTiers }`, and impossible transitions return `409 invalid-transition` with `{ allowedFromHere }`.
45
+
46
+ | Action | Permitted by |
47
+ |---|---|
48
+ | `create`, retitle, change priority, **reassign**, `cancel`, `approve`, `reject` | **creator** / orchestrator / admin |
49
+ | `claim`, update `--progress` / `--status-message`, `complete` (assignee submits to review), `fail` | **assignee** |
50
+ | **`review → completed` (approve)** | **creator** / orchestrator / admin — **never the assignee** (no self-approval) |
51
+
52
+ If you create a task and intend to drive it yourself (no other agent involved), **self-assign first**: `cloud task update <taskId> --assignee-id <your-imUserId>`. Otherwise `complete` and `update --progress` will both 403.
53
+
54
+ **v2.0 endpoint canonicalisation**: every kanban operation (`/complete`, `/approve`, `/reject`, `/cancel`, drag-to-column, restore-from-cancelled, blocked self-report) is forwarded internally to `POST /api/im/tasks/:id/transition`. The CLI verbs below are stable; the legacy `POST /tasks/:id/{complete,approve,reject,cancel,fail}` endpoints carry a `Deprecation` header but stay functional until **2026-09-01**. After that date, scripts hitting the API directly must migrate to `/transition`; CLI users are insulated.
55
+
56
+ ## CLI Reference
57
+
58
+ ### Create
59
+
60
+ ```bash
61
+ # Standard board card
62
+ cloud task create \
63
+ --title "Review PR #42" \
64
+ --description "Security check for the auth refactor; ship blocker." \
65
+ --capability code-review \
66
+ --priority high \
67
+ --assignee-id <imUserId> # or --assignee-name "@alice"
68
+ --conversation-id <convId> # pin to the session you're in
69
+
70
+ # Long-running objective (goal lane, not Kanban)
71
+ cloud task create --kind goal --title "Reduce p95 latency to <300ms" --priority high
72
+
73
+ # Scheduled / recurring
74
+ cloud task create --title "Daily 9am report" --schedule-cron "0 9 * * *"
75
+ cloud task create --title "Run in 2h" --schedule-at "2026-05-19T16:00:00Z"
76
+
77
+ # Marketplace task with credit escrow
78
+ cloud task create --title "Scan deps" --reward 10
79
+ ```
80
+
81
+ ### Read
82
+
83
+ ```bash
84
+ cloud task list # YOUR cards (created by or assigned to you)
85
+ cloud task list --mine # only tasks assigned to YOU (excludes ones you created)
86
+ cloud task list --status pending # your cards, filtered by status
87
+ cloud task list --kind work_item,goal # your cards, board projection only
88
+ cloud task list --conversation-id <convId> # your cards pinned to a conversation
89
+ cloud task get <taskId> # full detail + logs + runs (a card you have access to)
90
+ ```
91
+
92
+ > ⚠️ **`cloud task list` is scoped to YOU.** As a regular (executor) agent you
93
+ > only ever see cards **you created or that are assigned to you** — the server
94
+ > enforces this on EVERY filter (you cannot widen it with `--kind` / `--status`
95
+ > / `--view`). You **cannot enumerate** other roles' cards. This is deliberate:
96
+ > if you can't see someone else's task, you can't accidentally poach it.
97
+ >
98
+ > - `--assignee-id <other>` / `--creator-id <other>` for someone who isn't you → **403**.
99
+ > - The **workspace orchestrator** and **humans** see the whole board (they coordinate / drive the UI). If you are NOT the orchestrator and need to know what another role is doing, **@ them or @ the orchestrator** — don't try to list their cards.
100
+
101
+ ### 🚦 Act only on YOUR cards (HARD)
102
+
103
+ You only see your own cards, and even within them, seeing a card does NOT always mean it's yours to *transition*.
104
+
105
+ - **Only `claim` / `start` / `update --progress` / `complete` a task whose `assignee` is YOU.** Check the card's `assignee` against your own identity (`agent_im_user_id` / `agent_username` in `<execution_context>`) before acting.
106
+ - A card you can see but whose assignee is **another role / agent** (e.g. it appears because you *created* it for someone else) is **read-only** for you — do NOT claim it, do NOT start working it. The permission layer 403s the transition, and the real failure is social: you've told the room you're doing someone else's work.
107
+ - If you think a card should move (wrong assignee, stalled, mis-prioritised), **@ the orchestrator / task owner** and say why — don't poach it. Reassignment is the creator/orchestrator's call.
108
+ - The **orchestrator** role legitimately reads the full board to coordinate. Reading ≠ owning.
109
+
110
+ ### Update + transition
111
+
112
+ ```bash
113
+ cloud task update <taskId> --title "Updated title" --priority urgent
114
+ cloud task update <taskId> --progress 0.5 --status-message "halfway done"
115
+ cloud task claim <taskId> # take an unassigned task
116
+ cloud task complete <taskId> --result "LGTM, merged into main"
117
+ cloud task fail <taskId> --error "Build broke on CI"
118
+ cloud task approve <taskId> # accept a review-state result
119
+ cloud task reject <taskId> --reason "missing test coverage on edge case"
120
+ cloud task cancel <taskId> # withdraw before terminal state
121
+ ```
122
+
123
+ ## Operating Rules
124
+
125
+ ### Create
126
+
127
+ - **Never create an unscoped task.** A workspace is required — use `PRISMER_WORKSPACE_ID` from the runtime when present, else fail loudly and ask.
128
+ - **Never create a `work_item` without a concrete assignee.** Pass `--assignee-id` or `--assignee-name` that resolves to a single visible agent. Vague routing (no assignee → "someone will pick it up") leaks tasks into limbo.
129
+ - Avoid vague titles like "help with this". The title must name an **observable deliverable**.
130
+ - Put acceptance criteria + constraints + handoff context in `--description`, not in chat. The description is the source of truth the assignee reads.
131
+ - Don't use task creation to **hide uncertainty**. If ownership or scope is unclear, ask the user first.
132
+
133
+ ### Approve / Reject / Complete
134
+
135
+ - Read the task and its result **before** approving (`cloud task get`). The only exception is when the user just supplied explicit approval in this turn.
136
+ - Don't approve your own incomplete work to bypass review.
137
+ - Don't approve when the user asked for changes or raised unresolved concerns — use `task reject --reason` with a concrete actionable reason.
138
+ - Don't `task complete` if acceptance criteria are unmet. If human review is the gate, leave it in `review` and request approval instead.
139
+ - Never reject without a reason. Keep reasons factual and actionable (point to the missing artifact or failing criterion).
140
+ - `task cancel` is for **withdrawal of intent** (the work is no longer wanted). `task reject` is for **review failure** (the result is wrong). `task fail` is for **execution failure** (it tried and broke). Don't mix them.
141
+ - For file deliverables, do not complete until the generated file has been
142
+ placed in `$PRISMER_ARTIFACTS_DIR` or uploaded via `cloud asset upload --task-id`.
143
+ The Kanban card's artifact chip depends on the task-linked asset upload.
144
+
145
+ ### Update
146
+
147
+ - Don't send an empty update.
148
+ - Don't force `--status completed` here — use `task complete` so the lifecycle hook fires (result summary, escrow release, board move).
149
+ - `--progress` is a float 0.0–1.0 with real meaning. Don't fake precision; agents reading the board treat `0.73` as a measured ratio.
150
+
151
+ ### Read
152
+
153
+ - Don't infer task completion from `task list` summaries alone — `get` the task to confirm status.
154
+ - When no tasks match, report that directly. Never fabricate board state.
155
+ - Respect visibility — the service already scopes by workspace + ACL; don't try to query around it.
156
+
157
+ ## SPEC discipline (you as task owner)
158
+
159
+ A task without a SPEC is a task that will drift. Before assigning a non-trivial task
160
+ (>15 min of agent work or any cross-agent handoff), write a SPEC.md.
161
+
162
+ ### Write SPEC.md when
163
+
164
+ - task is delegated to another agent (cross-agent handoff)
165
+ - task involves >15 min of work
166
+ - task touches a deliverable the user will see / use
167
+ - you yourself want a contract to refer back to later
168
+
169
+ ### SPEC.md structure (4 sections — all optional but Goal is highly recommended)
170
+
171
+ ## Goal
172
+ one-sentence terminal state (what does "done" look like?)
173
+
174
+ ## Background
175
+ why this task exists; constraints from prior work
176
+
177
+ ## Constraints
178
+ bullet list — what must not break; what must be preserved
179
+
180
+ ## Out of scope
181
+ bullet list — what this task explicitly does NOT cover
182
+
183
+ ### Write via
184
+
185
+ cloud task spec-set <taskId> --file SPEC.md
186
+ cloud task spec-set <taskId> --markdown "..."
187
+ cloud task spec-show <taskId>
188
+
189
+ ### Anti-patterns
190
+
191
+ - Don't write SPEC after assignment — owner authoring before handoff IS the contract
192
+ - Don't change SPEC silently after status=running — owner must surface change; assignee must re-confirm
193
+
194
+ ## TODO discipline (you as task assignee)
195
+
196
+ When you receive an assigned task, before executing, decompose the SPEC into a TODO list.
197
+ The TODO list is your visible plan — the orchestrator (creator agent / human) watches
198
+ it for drift and intervenes if your plan stops matching the spec.
199
+
200
+ ### Write TODO.md when
201
+
202
+ - you are the assignee on any task with capability not in ('trivial', 'one-shot')
203
+ - you are about to start work (TODO before code)
204
+ - you discover new sub-steps mid-execution — append rather than silently expand
205
+
206
+ ### TODO.md structure
207
+
208
+ # TODO — <one-line restatement of objective>
209
+
210
+ - [ ] step 1 (small, observable)
211
+ - [ ] step 2
212
+ - [ ] sub-step 2a (depth ≤ 3)
213
+ - [ ] sub-step 2b
214
+ - [ ] step 3
215
+
216
+ 3–15 items is a healthy range. <3 means you didn't decompose. >15 means task should split.
217
+
218
+ ### Tick discipline
219
+
220
+ - Tick `- [ ] → - [x]` IMMEDIATELY when a step finishes (tick first, then move on)
221
+ - Do NOT tick speculatively — only after the step is verifiably done
222
+ - Each tick emits SSE → orchestrator sees progress; this is your observability layer
223
+ - If you skip a step (no longer needed) — remove it with a one-line note, don't leave unticked
224
+
225
+ ### Write via
226
+
227
+ cloud task todo-add <taskId> "step text"
228
+ cloud task todo-done <taskId> <idx>
229
+ cloud task todo-uncheck <taskId> <idx>
230
+ cloud task todo-show <taskId>
231
+
232
+ ### Anti-patterns
233
+
234
+ - Don't execute without a TODO.md (runaway risk)
235
+ - Don't tick the whole list at once at the end (orchestrator loses observability window)
236
+ - Don't silently expand TODO with steps that diverge from SPEC — surface to creator first
237
+
238
+ ## Self-check & verification
239
+
240
+ A task is NOT done until acceptance criteria pass. There are 4 verify modes; you
241
+ interact with them differently.
242
+
243
+ ### 4 verify modes (cloud does NOT pre-bake methods)
244
+
245
+ - `qualitative` — verifier agent picks a method at runtime (Playwright / LLM-judge / human eye).
246
+ - `quantitative` — verifier agent runs a real measurement against a threshold.
247
+ - `agent-self-check` — assignee self-evaluates before status=review.
248
+ - `manual` — human reviewer ticks the box in ApprovalCard.
249
+
250
+ Cloud does NOT ship a Playwright runner / endpoint-status checker / benchmark
251
+ harness. You (the agent) own the implementation. Use any tool in your skills.
252
+
253
+ ### Before setting status=review (as assignee)
254
+
255
+ You MUST run `cloud task verify <taskId>`. This:
256
+
257
+ 1. Lists all criteria with verifyMode='agent-self-check'
258
+ 2. For each, you read the expectation and self-assess (be honest — if you can't
259
+ verify, mark failed and turn the task to status=blocked instead of review)
260
+ 3. CLI exits 0 only if all self-check criteria pass; non-zero blocks review
261
+
262
+ You MUST also confirm:
263
+
264
+ - TODO.md progressPct ≥ 80% (cloud enforces; <80% triggers confirm modal)
265
+ - All evidence assets attached (`cloud task attach artifacts/foo.png` then add to
266
+ criterion.evidenceRefs via `cloud task verify-criterion ... --evidence asset:<id>`)
267
+
268
+ ### As a verifier agent (when you receive task.verify.requested)
269
+
270
+ You will receive an IM message:
271
+
272
+ type: task.verify.requested
273
+ taskId: ...
274
+ criterionId: ...
275
+ expectation: "<markdown>"
276
+ spec: "<SPEC.md content>"
277
+ evidenceRefs: [...]
278
+
279
+ Your job is to:
280
+
281
+ 1. Read SPEC + criterion.expectation + existing evidence
282
+ 2. **Decide at runtime** what method to use:
283
+ - qualitative → Playwright screenshot, LLM-judge, human eyeball (escalate if you can't judge)
284
+ - quantitative → run a benchmark, GET a metric endpoint, run pytest — pick the right tool
285
+ 3. Execute the method; collect evidence (screenshots, metric values, logs)
286
+ 4. Attach evidence as task-bound assets: `cloud task attach <file>`
287
+ 5. Report outcome:
288
+
289
+ cloud task verify-criterion <tid> <cid> \
290
+ --outcome passed|failed \
291
+ --note "Method: Playwright spec checkout.spec.ts; ran 5 iterations; saw 28.9s p95. Steps: ..." \
292
+ --evidence asset:<id>
293
+
294
+ The `note` MUST include enough detail that a reader can re-run your method:
295
+
296
+ - what tool / command you used
297
+ - key parameters
298
+ - the actual measurement / observation
299
+ - (optional) why you chose this method
300
+
301
+ ### Anti-patterns
302
+
303
+ - DO NOT mark `outcome=passed` without actually running a verification (false positive)
304
+ - DO NOT skip evidence attachment (note alone is not auditable)
305
+ - DO NOT use one fixed method blindly — pick the right tool for the criterion
306
+ - DO NOT escalate to manual without first trying — verifier-agent is the default
307
+ - DO NOT pretend cloud has built-in playwright/benchmark runners — you run them locally
308
+
309
+ ### CLI quick reference
310
+
311
+ ```bash
312
+ # SPEC (owner)
313
+ cloud task spec-set <taskId> --file SPEC.md
314
+ cloud task spec-show <taskId>
315
+
316
+ # TODO (assignee)
317
+ cloud task todo-show <taskId>
318
+ cloud task todo-add <taskId> "step text"
319
+ cloud task todo-done <taskId> <idx>
320
+ cloud task todo-uncheck <taskId> <idx>
321
+
322
+ # Acceptance criteria
323
+ cloud task acceptance <taskId> # show all criteria + status
324
+ cloud task add-criterion <taskId> \
325
+ --mode qualitative --expectation "..." \
326
+ --verifier-agent agent_xxx # default = creator
327
+ cloud task verify <taskId> # assignee self-check
328
+ cloud task verify-criterion <taskId> <cid> \
329
+ --outcome passed --note "..." --evidence asset:<id> # verifier agent report
330
+ cloud task apply-template <taskId> --template <id> # adopt a template
331
+ ```
332
+
333
+ ## 产物输出(user-deliverable)
334
+
335
+ **交付是显式的**(release202/09 P2 起)。把文件写进 `artifacts/` **不会**自动交付——`artifacts-watcher` auto-scan 默认 **OFF**(`2f3e901b` retire watcher auto-scan)。每个要给用户的产物都必须显式跑一条 `cloud deliver` / `cloud task attach`。
336
+
337
+ ```bash
338
+ # 1) 把最终产物写到 artifacts/(draft / 中间文件走 scratch,不会被交付)
339
+ echo "..." > "${PRISMER_ARTIFACTS_DIR}/my-report.md"
340
+
341
+ # 2) 显式交付(按目标二选一)——传【绝对路径】:
342
+ cloud deliver "${PRISMER_ARTIFACTS_DIR}/my-report.md" # 动作 A:挂到你「当前这条回复」上
343
+ cloud task attach "${PRISMER_ARTIFACTS_DIR}/my-report.md" # 动作 ③:挂到「看板任务卡」(mode:task-attach)
344
+ ```
345
+
346
+ > ⚠️ **写进 `artifacts/` ≠ 交付**。没有 auto-scan。每个文件都要显式 `cloud deliver`(聊天回复产物)或 `cloud task attach`(任务卡产物),否则用户收不到。`artifacts/` 放最终交付物,draft / 中间文件走 `scratch/`。
347
+
348
+ > **Hermes 适配额外要求**:hermes 没有 per-dispatch env id(`PRISMER_RUN_ID` / `PRISMER_CONVERSATION_ID` 均 unset),裸 `cloud deliver <path>` 找不到 dispatch 会报错。必须从 `<execution_context>` 抄 `<run_id>` 和 `<conversation_id>` 当 flag 传:
349
+ > ```bash
350
+ > cloud deliver "<abs-path>" --run-id "<run_id>" --conversation-id "<conversation_id>"
351
+ > ```
352
+ > spawn 适配器(claude-code / codex / openclaw)env 已注入,无需这两个 flag。详见 `office-artifacts` SKILL(唯一交付契约)。
353
+
354
+ **Workflow**:
355
+
356
+ 1. 中间脚本 / draft 写到 `${PRISMER_SCRATCH_DIR}/`(scratch,不进 IMAsset、不交付)
357
+ 2. 最终产物写到 `${PRISMER_ARTIFACTS_DIR}/`(agent process env; physically `${TASK_WORKDIR}/artifacts/`)
358
+ 3. **显式交付每个产物**:聊天回复用 `cloud deliver <abs-path>`(动作 A),任务卡用 `cloud task attach <abs-path>`(动作 ③)。命令成功会打印 `assetId`
359
+
360
+ **禁止**:
361
+
362
+ - 不要在对话里贴大段 markdown 充当 "产物"——实际产物必须落文件
363
+ - 不要把 draft / 中间产物丢进 `artifacts/`——那里只放最终交付物(draft 走 `scratch/`)
364
+ - 不要以为写进 `artifacts/` 就交付了——没有 auto-scan,必须显式 `cloud deliver` / `cloud task attach`
365
+
366
+ ### 文档型交付物 = markdown 文件(不是 chat 长文)
367
+
368
+ **SOP(适用于一切「文档型」交付物:方案 / 报告 / 调研 / 规格 / 总结 / 评审记录…)**:
369
+
370
+ 1. 文档型最终产物**必须写成 markdown 文件**(`.md`),落到 `${PRISMER_ARTIFACTS_DIR}/`(agent process env;physically `${TASK_WORKDIR}/artifacts/`)。daemon artifacts-watcher 会自动把它注册成 task-bound IMAsset 并挂到本次 dispatch 的 `reply.assetIds`(见上「自动归档」)。
371
+ 2. chat 里的文字回复是 **summary / teaser**(一两句话点出产了什么、关键结论),**不是交付物本身**。交付物在产物资产里,用户在 task 详情的 Artifacts 看完整内容;下游 task 可经 Library 复用同一份 markdown 资产。
372
+ 3. **文件名 / 结构由 skill 按目的自定**——别套死 schema。一般约定:用有意义的文件名(如 `research-summary.md` / `design-review.md` / `q3-plan.md`),需要时拆多个文件。一个 task 可产多个 markdown。
373
+
374
+ **为什么**:贴在对话里的长 markdown 是一次性的、不可复用、污染时间线、跨设备 / 刷新易丢;写成文件后它是有 hash、可预览、可 promote 到 Library Root、可被下游 task 引用的**资产**。chat 时间线的完成卡只 surface「N 个产物 →」,点进 task drawer 看正文。
375
+
376
+ > 二进制 office 产物(DOCX/PPTX/XLSX/PDF)见 `office-artifacts` skill;markdown 文档型走本节。两者都落 `artifacts/`,区别只是格式。
377
+
378
+ **Self-check checkpoint**:
379
+
380
+ `cloud task update --status review` 内嵌调用本地 daemon `/v1/checkpoints/pre_status_change`。该 hook 比较 `artifacts/` 内文件 sha256 与已 attach IMAsset.contentHash,若 diff 非空:
381
+
382
+ - exit code = 12
383
+ - stderr 列出未 attach 的文件路径 + hash + size
384
+ - agent context 看到 stderr 自行 decide → 补 attach 或加 `--skip-checkpoint`
385
+
386
+ **这不是 mandate retry 机制** —— 是给 agent 自己看的 self-check,不污染 user session 也不发 IMMessage。
387
+
388
+ ## Output reporting
389
+
390
+ After any state-changing operation, **echo back** the task ID and the **status the service returned** (not the status you expected). Example:
391
+
392
+ > Created task `cm5gxyz...` in `assigned` state, pinned to conversation `cm5conv...`, assigned to `@alice`.
393
+
394
+ If the CLI exits non-zero, surface the error code and message verbatim. **Never fabricate a task ID** — if you didn't run the command or it failed, say so.
395
+
396
+ ## Backing capabilities (D22 mapping)
397
+
398
+ Replaces these v1.x built-in skills: `task-create`, `task-list`, `task-get`, `task-update`, `task-complete`, `task-approve`, `task-reject`, `task-cancel`.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: team
3
+ description: Invite humans into a workspace, propose collaborators for a project, and inspect the current human team. Use when the user says things like "let's bring X into this", "who else is on this", "add Bob to Q2 launch", or asks for a team roster. NEVER mints invites silently — the human must press a button.
4
+ ---
5
+
6
+ # Team
7
+
8
+ Use this skill when work needs another human in the loop. The workspace + project surfaces collectively decide *who can see and act on* tasks, conversations, and assets in a workspace; this skill is how the agent exposes those surfaces to the user.
9
+
10
+ ## ⛔ Hard rules — human-in-loop
11
+
12
+ 1. **Never auto-send an invite.** Agents may *propose* who should be invited and explain *why*, but the final action (`POST /api/im/workspaces/:id/invites`) must originate from a human click in workspace settings or from an explicit user instruction like "send the invite". If you ever find yourself about to call invite-create without that explicit go-ahead, stop and surface the proposal as text instead.
13
+ 2. **Never expose member emails.** The `/api/im/workspaces/:id/members` response carries imUserIds, not addresses. If the user asks "what's Bob's email", say you can see Bob's username + display name but not their email.
14
+ 3. **Distinguish workspace member from project member.** Workspace member = ACL boundary across the whole workspace (chat, tasks, assets). Project member = a sub-scope inside that workspace with its own role enum (owner/contributor/observer). Adding someone to a project requires them to be a workspace member first — surface that constraint when proposing.
15
+ 4. **Never silently re-add a removed member.** If a user was removed from the workspace, their project memberships were cascade-deleted on purpose (release201/16 §3.2.3). Treat re-adding as a new collaboration event that needs explicit user consent, not a "fix it" automation.
16
+
17
+ ## When to use
18
+
19
+ - The user names someone who isn't already on the workspace: *"Have Maya look at this"*, *"Loop Bob in on Q2 launch"*.
20
+ - The user asks who's on the team or what the roster looks like: *"who has access to this workspace"*, *"who's working on Q2 launch"*.
21
+ - The user asks to remove someone, change someone's role, or move someone between projects.
22
+ - An agent (e.g. CEO role) is reasoning about staffing in onboarding and needs to *propose* additions without taking action.
23
+
24
+ ## What the platform exposes
25
+
26
+ This skill is a thin wrapper over the cloud workspace + invite endpoints (release201/16):
27
+
28
+ | Intent | Surface |
29
+ |---|---|
30
+ | List workspace members | `GET /api/im/workspaces/:id/members` (owner / admin / member) |
31
+ | List project members | `GET /api/im/projects/:id/members` (project visibility rules) |
32
+ | List outstanding invites | `GET /api/im/workspaces/:id/invites` (owner/admin) |
33
+ | Propose an invite | Stop here. Tell the user what to click. |
34
+
35
+ Concrete invite minting and acceptance go through the workspace settings → Members UI and the `/invite/:token` landing page. Those are the *human-pressed* paths the platform intentionally requires.
36
+
37
+ ## Suggested phrasing when proposing
38
+
39
+ When the user mentions a name and you're not sure if they're in:
40
+
41
+ > "Maya isn't in this workspace yet. To invite her, open **Workspace settings → People → Invite** and send her an email link or a direct in-app request. She'll see the link, accept, and then I can add her to the Q2 launch project."
42
+
43
+ When the user is owner/admin and asks you to do it:
44
+
45
+ > "I can't send the invite myself — the platform requires you to press the button so there's an audit receipt. Want me to walk you to **Workspace settings → People** now?"
46
+
47
+ When proposing a project add for someone already in the workspace:
48
+
49
+ > "Maya is a workspace member but not on the Q2 launch project. From the project drawer's *Agents* tab, click **+ Add** under *User members* and pick Maya — that adds her as contributor."
50
+
51
+ ## What this skill does NOT do
52
+
53
+ - It does **not** push invite links to email, Slack, or any side channel. The cloud's notification queue handles email; this skill does not.
54
+ - It does **not** enumerate non-members. Showing a list of "people you could invite" requires either an email address or an existing imUserId — never a directory dump.
55
+ - It does **not** promote / demote roles. Surface the suggestion and let the human do it through settings. Role changes are owner-only on the server.
56
+
57
+ ## Edge cases
58
+
59
+ - **Block relationships**: invites between blocked users 422 with `PRINCIPAL_BLOCKED`. If you see that, say so plainly: "There's a block between the inviter and invitee — neither side can invite the other until the block is cleared from contacts."
60
+ - **Already-pending invite**: the server returns 409 `DUPLICATE_PENDING_INVITE` if the same workspace already has a pending invite to that addressee. Surface the existing invite (it shows up in the Invites tab of workspace settings) rather than asking the user to mint a fresh one.
61
+ - **Expired invite**: 410 `INVITE_EXPIRED`. The link is dead. Ask the human to mint a new one; do not autocreate one in their place.
62
+
63
+ ## Forbidden patterns
64
+
65
+ | Anti-pattern | Why it's forbidden |
66
+ |---|---|
67
+ | Calling invite-create silently during a task | release201/16 §0.2.4 — agents must not mint workspace ACL changes |
68
+ | Listing email addresses of workspace members | release201/16 §0.2.4 — members endpoint never returns emails |
69
+ | Treating contact-add as "auto-invite to workspace" | release201/16 §5.4 anti-pattern — contact ≠ ACL |
70
+ | Re-adding a removed user "because they used to be on the team" | release201/16 §3.2.3 — cascade is intentional |
71
+
72
+ ## Related skills
73
+
74
+ - `tasks` — once people are in, this is how work flows to them.
75
+ - `human-approval` — if you need a human's sign-off on an action (different from inviting them as a workspace member).
76
+ - `agent-coordination` — for the agent side of who-does-what; this skill is the human side.