@springbrand/cli 0.1.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 (222) hide show
  1. package/README.md +167 -0
  2. package/dist/commands/auth.d.ts +4 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +241 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/check-version.d.ts +3 -0
  7. package/dist/commands/check-version.d.ts.map +1 -0
  8. package/dist/commands/check-version.js +112 -0
  9. package/dist/commands/check-version.js.map +1 -0
  10. package/dist/commands/config-claude.d.ts +4 -0
  11. package/dist/commands/config-claude.d.ts.map +1 -0
  12. package/dist/commands/config-claude.js +78 -0
  13. package/dist/commands/config-claude.js.map +1 -0
  14. package/dist/commands/connect.d.ts +41 -0
  15. package/dist/commands/connect.d.ts.map +1 -0
  16. package/dist/commands/connect.js +901 -0
  17. package/dist/commands/connect.js.map +1 -0
  18. package/dist/commands/doctor.d.ts +6 -0
  19. package/dist/commands/doctor.d.ts.map +1 -0
  20. package/dist/commands/doctor.js +124 -0
  21. package/dist/commands/doctor.js.map +1 -0
  22. package/dist/commands/upgrade.d.ts +9 -0
  23. package/dist/commands/upgrade.d.ts.map +1 -0
  24. package/dist/commands/upgrade.js +133 -0
  25. package/dist/commands/upgrade.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +15 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/agent-detect.d.ts +33 -0
  31. package/dist/lib/agent-detect.d.ts.map +1 -0
  32. package/dist/lib/agent-detect.js +81 -0
  33. package/dist/lib/agent-detect.js.map +1 -0
  34. package/dist/lib/agent-launcher.d.ts +22 -0
  35. package/dist/lib/agent-launcher.d.ts.map +1 -0
  36. package/dist/lib/agent-launcher.js +67 -0
  37. package/dist/lib/agent-launcher.js.map +1 -0
  38. package/dist/lib/auth.d.ts +90 -0
  39. package/dist/lib/auth.d.ts.map +1 -0
  40. package/dist/lib/auth.js +327 -0
  41. package/dist/lib/auth.js.map +1 -0
  42. package/dist/lib/bundled-skill.d.ts +5 -0
  43. package/dist/lib/bundled-skill.d.ts.map +1 -0
  44. package/dist/lib/bundled-skill.js +13 -0
  45. package/dist/lib/bundled-skill.js.map +1 -0
  46. package/dist/lib/claude-config.d.ts +19 -0
  47. package/dist/lib/claude-config.d.ts.map +1 -0
  48. package/dist/lib/claude-config.js +202 -0
  49. package/dist/lib/claude-config.js.map +1 -0
  50. package/dist/lib/cli-install.d.ts +40 -0
  51. package/dist/lib/cli-install.d.ts.map +1 -0
  52. package/dist/lib/cli-install.js +42 -0
  53. package/dist/lib/cli-install.js.map +1 -0
  54. package/dist/lib/command-code-config.d.ts +5 -0
  55. package/dist/lib/command-code-config.d.ts.map +1 -0
  56. package/dist/lib/command-code-config.js +16 -0
  57. package/dist/lib/command-code-config.js.map +1 -0
  58. package/dist/lib/connect-all-auth.d.ts +21 -0
  59. package/dist/lib/connect-all-auth.d.ts.map +1 -0
  60. package/dist/lib/connect-all-auth.js +113 -0
  61. package/dist/lib/connect-all-auth.js.map +1 -0
  62. package/dist/lib/connect-all-summary.d.ts +10 -0
  63. package/dist/lib/connect-all-summary.d.ts.map +1 -0
  64. package/dist/lib/connect-all-summary.js +153 -0
  65. package/dist/lib/connect-all-summary.js.map +1 -0
  66. package/dist/lib/connect-all-uninstall.d.ts +7 -0
  67. package/dist/lib/connect-all-uninstall.d.ts.map +1 -0
  68. package/dist/lib/connect-all-uninstall.js +249 -0
  69. package/dist/lib/connect-all-uninstall.js.map +1 -0
  70. package/dist/lib/connect-all.d.ts +42 -0
  71. package/dist/lib/connect-all.d.ts.map +1 -0
  72. package/dist/lib/connect-all.js +438 -0
  73. package/dist/lib/connect-all.js.map +1 -0
  74. package/dist/lib/connect-auth.d.ts +7 -0
  75. package/dist/lib/connect-auth.d.ts.map +1 -0
  76. package/dist/lib/connect-auth.js +50 -0
  77. package/dist/lib/connect-auth.js.map +1 -0
  78. package/dist/lib/connect-clients.d.ts +108 -0
  79. package/dist/lib/connect-clients.d.ts.map +1 -0
  80. package/dist/lib/connect-clients.js +358 -0
  81. package/dist/lib/connect-clients.js.map +1 -0
  82. package/dist/lib/connect-fallback.d.ts +27 -0
  83. package/dist/lib/connect-fallback.d.ts.map +1 -0
  84. package/dist/lib/connect-fallback.js +166 -0
  85. package/dist/lib/connect-fallback.js.map +1 -0
  86. package/dist/lib/connect-picker.d.ts +19 -0
  87. package/dist/lib/connect-picker.d.ts.map +1 -0
  88. package/dist/lib/connect-picker.js +155 -0
  89. package/dist/lib/connect-picker.js.map +1 -0
  90. package/dist/lib/connect-preflight.d.ts +17 -0
  91. package/dist/lib/connect-preflight.d.ts.map +1 -0
  92. package/dist/lib/connect-preflight.js +81 -0
  93. package/dist/lib/connect-preflight.js.map +1 -0
  94. package/dist/lib/connect-runtime.d.ts +109 -0
  95. package/dist/lib/connect-runtime.d.ts.map +1 -0
  96. package/dist/lib/connect-runtime.js +360 -0
  97. package/dist/lib/connect-runtime.js.map +1 -0
  98. package/dist/lib/constants.d.ts +23 -0
  99. package/dist/lib/constants.d.ts.map +1 -0
  100. package/dist/lib/constants.js +87 -0
  101. package/dist/lib/constants.js.map +1 -0
  102. package/dist/lib/cursor-config.d.ts +16 -0
  103. package/dist/lib/cursor-config.d.ts.map +1 -0
  104. package/dist/lib/cursor-config.js +34 -0
  105. package/dist/lib/cursor-config.js.map +1 -0
  106. package/dist/lib/doctor-checks.d.ts +21 -0
  107. package/dist/lib/doctor-checks.d.ts.map +1 -0
  108. package/dist/lib/doctor-checks.js +312 -0
  109. package/dist/lib/doctor-checks.js.map +1 -0
  110. package/dist/lib/doctor-repairs.d.ts +11 -0
  111. package/dist/lib/doctor-repairs.d.ts.map +1 -0
  112. package/dist/lib/doctor-repairs.js +130 -0
  113. package/dist/lib/doctor-repairs.js.map +1 -0
  114. package/dist/lib/doctor-report.d.ts +195 -0
  115. package/dist/lib/doctor-report.d.ts.map +1 -0
  116. package/dist/lib/doctor-report.js +102 -0
  117. package/dist/lib/doctor-report.js.map +1 -0
  118. package/dist/lib/doctor-telemetry.d.ts +9 -0
  119. package/dist/lib/doctor-telemetry.d.ts.map +1 -0
  120. package/dist/lib/doctor-telemetry.js +63 -0
  121. package/dist/lib/doctor-telemetry.js.map +1 -0
  122. package/dist/lib/harness-detect.d.ts +33 -0
  123. package/dist/lib/harness-detect.d.ts.map +1 -0
  124. package/dist/lib/harness-detect.js +70 -0
  125. package/dist/lib/harness-detect.js.map +1 -0
  126. package/dist/lib/harness-spec.d.ts +285 -0
  127. package/dist/lib/harness-spec.d.ts.map +1 -0
  128. package/dist/lib/harness-spec.js +268 -0
  129. package/dist/lib/harness-spec.js.map +1 -0
  130. package/dist/lib/harness.d.ts +27 -0
  131. package/dist/lib/harness.d.ts.map +1 -0
  132. package/dist/lib/harness.js +125 -0
  133. package/dist/lib/harness.js.map +1 -0
  134. package/dist/lib/hermes-config.d.ts +22 -0
  135. package/dist/lib/hermes-config.d.ts.map +1 -0
  136. package/dist/lib/hermes-config.js +76 -0
  137. package/dist/lib/hermes-config.js.map +1 -0
  138. package/dist/lib/hermes-env.d.ts +19 -0
  139. package/dist/lib/hermes-env.d.ts.map +1 -0
  140. package/dist/lib/hermes-env.js +169 -0
  141. package/dist/lib/hermes-env.js.map +1 -0
  142. package/dist/lib/hermes-plugin.d.ts +40 -0
  143. package/dist/lib/hermes-plugin.d.ts.map +1 -0
  144. package/dist/lib/hermes-plugin.js +168 -0
  145. package/dist/lib/hermes-plugin.js.map +1 -0
  146. package/dist/lib/install-root.d.ts +18 -0
  147. package/dist/lib/install-root.d.ts.map +1 -0
  148. package/dist/lib/install-root.js +55 -0
  149. package/dist/lib/install-root.js.map +1 -0
  150. package/dist/lib/mcp-config.d.ts +36 -0
  151. package/dist/lib/mcp-config.d.ts.map +1 -0
  152. package/dist/lib/mcp-config.js +90 -0
  153. package/dist/lib/mcp-config.js.map +1 -0
  154. package/dist/lib/mcp-endpoint.d.ts +16 -0
  155. package/dist/lib/mcp-endpoint.d.ts.map +1 -0
  156. package/dist/lib/mcp-endpoint.js +41 -0
  157. package/dist/lib/mcp-endpoint.js.map +1 -0
  158. package/dist/lib/mcp-json-config.d.ts +43 -0
  159. package/dist/lib/mcp-json-config.d.ts.map +1 -0
  160. package/dist/lib/mcp-json-config.js +164 -0
  161. package/dist/lib/mcp-json-config.js.map +1 -0
  162. package/dist/lib/notice.d.ts +13 -0
  163. package/dist/lib/notice.d.ts.map +1 -0
  164. package/dist/lib/notice.js +73 -0
  165. package/dist/lib/notice.js.map +1 -0
  166. package/dist/lib/omp-config.d.ts +18 -0
  167. package/dist/lib/omp-config.d.ts.map +1 -0
  168. package/dist/lib/omp-config.js +73 -0
  169. package/dist/lib/omp-config.js.map +1 -0
  170. package/dist/lib/output.d.ts +22 -0
  171. package/dist/lib/output.d.ts.map +1 -0
  172. package/dist/lib/output.js +92 -0
  173. package/dist/lib/output.js.map +1 -0
  174. package/dist/lib/pi-config.d.ts +27 -0
  175. package/dist/lib/pi-config.d.ts.map +1 -0
  176. package/dist/lib/pi-config.js +113 -0
  177. package/dist/lib/pi-config.js.map +1 -0
  178. package/dist/lib/registration-detect.d.ts +28 -0
  179. package/dist/lib/registration-detect.d.ts.map +1 -0
  180. package/dist/lib/registration-detect.js +563 -0
  181. package/dist/lib/registration-detect.js.map +1 -0
  182. package/dist/lib/setup-telemetry.d.ts +273 -0
  183. package/dist/lib/setup-telemetry.d.ts.map +1 -0
  184. package/dist/lib/setup-telemetry.js +309 -0
  185. package/dist/lib/setup-telemetry.js.map +1 -0
  186. package/dist/lib/signals.d.ts +14 -0
  187. package/dist/lib/signals.d.ts.map +1 -0
  188. package/dist/lib/signals.js +29 -0
  189. package/dist/lib/signals.js.map +1 -0
  190. package/dist/lib/skill-install.d.ts +10 -0
  191. package/dist/lib/skill-install.d.ts.map +1 -0
  192. package/dist/lib/skill-install.js +94 -0
  193. package/dist/lib/skill-install.js.map +1 -0
  194. package/dist/lib/skill-paths.d.ts +7 -0
  195. package/dist/lib/skill-paths.d.ts.map +1 -0
  196. package/dist/lib/skill-paths.js +37 -0
  197. package/dist/lib/skill-paths.js.map +1 -0
  198. package/dist/lib/skill-vendor.d.ts +20 -0
  199. package/dist/lib/skill-vendor.d.ts.map +1 -0
  200. package/dist/lib/skill-vendor.js +215 -0
  201. package/dist/lib/skill-vendor.js.map +1 -0
  202. package/dist/lib/skill.d.ts +14 -0
  203. package/dist/lib/skill.d.ts.map +1 -0
  204. package/dist/lib/skill.js +87 -0
  205. package/dist/lib/skill.js.map +1 -0
  206. package/dist/lib/verify.d.ts +35 -0
  207. package/dist/lib/verify.d.ts.map +1 -0
  208. package/dist/lib/verify.js +169 -0
  209. package/dist/lib/verify.js.map +1 -0
  210. package/dist/program.d.ts +8 -0
  211. package/dist/program.d.ts.map +1 -0
  212. package/dist/program.js +54 -0
  213. package/dist/program.js.map +1 -0
  214. package/package.json +55 -0
  215. package/skill/springbrand-action-api/SKILL.md +49 -0
  216. package/skill/springbrand-action-api/references/action-aliases.md +156 -0
  217. package/skill/springbrand-action-api/references/action-discovery.md +95 -0
  218. package/skill/springbrand-connector/SKILL.md +49 -0
  219. package/skill/springbrand-gtm/SKILL.md +34 -0
  220. package/skill/springbrand-platform/SKILL.md +55 -0
  221. package/skill/springbrand-platform/references/plugin-discovery.md +94 -0
  222. package/skill/use-springbrand/SKILL.md +70 -0
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: springbrand-gtm
3
+ description: Use SpringBrand for substantive go-to-market and growth work such as market research, positioning, campaigns, creator or partner outreach, distribution, and conversion analysis.
4
+ ---
5
+
6
+ # SpringBrand GTM
7
+
8
+ Use this Skill when the user asks for substantive marketing or growth work,
9
+ even when they do not name SpringBrand. It is a scenario guide, not a separate
10
+ MCP executor. Use the common SpringBrand Skill to discover current operations
11
+ and then hand off to the Domain Skill that owns the actual effect.
12
+
13
+ ## Recognize the work
14
+
15
+ Typical requests include competitor or audience research, demand signals,
16
+ positioning, SEO or paid acquisition, creator and partner discovery, outreach,
17
+ campaign assets, distribution, conversion, and performance analysis. Simple
18
+ proofreading or unrelated coding is not GTM work.
19
+
20
+ ## Workflow
21
+
22
+ 1. Restate the business goal, audience, constraints, and desired outcome.
23
+ 2. Use `search_tools` through the common MCP guidance to discover current
24
+ Plugins or Action APIs. Do not rebuild a capability that the Gateway can
25
+ provide.
26
+ 3. Choose one current workflow owner: Platform for Plugin and Creation work,
27
+ Action API for a SpringBrand-managed service, or Connector for a connected
28
+ third-party source.
29
+ 4. Follow that Domain Skill's contract, risk, approval, and execution rules.
30
+ 5. Report evidence, limitations, and next actions without claiming an
31
+ operation ran when it was only discovered.
32
+
33
+ GTM discovery does not grant permission or authorize execution. Unknown writes
34
+ remain `outcome_unknown` and are never retried automatically.
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: springbrand-platform
3
+ description: Use SpringBrand Platform for Plugin discovery and lifecycle work, Artifact creation, uploads, and Creation publication. Use this guidance after the common SpringBrand MCP Skill identifies a Platform operation.
4
+ ---
5
+
6
+ # SpringBrand Platform
7
+
8
+ Use the unified SpringBrand MCP for Plugin, Artifact, and Creation workflows.
9
+ The CLI has already configured and authenticated the MCP connection; this
10
+ Skill does not install a Plugin, configure an endpoint, or start authentication.
11
+
12
+ ## Operation rules
13
+
14
+ Use `search_tools` once with a concise English query that preserves the
15
+ requested Plugin, Artifact, Creation, format, and publication goal. Select a
16
+ Platform operation from the returned results and copy its opaque Tool ID
17
+ unchanged. Use `get_tool_schemas` for the current contract before executing.
18
+ Ignore results whose effect belongs to Action API or Connector and hand the
19
+ user back to the common Skill for an explicit workflow transition.
20
+
21
+ `get_tool_schemas` and discovery do not add a Plugin, upload an Artifact, or
22
+ publish a Creation. Treat the current contract as authoritative and ask for
23
+ missing business values instead of inventing them.
24
+
25
+ ## Plugin lifecycle
26
+
27
+ 1. Discover the requested Plugin operation and inspect its current contract.
28
+ 2. Present the current Plugin identity, version, usage instructions, access
29
+ state, and acquisition requirement when available.
30
+ 3. For a paid or uncertain acquisition, explain the cost and wait for the
31
+ user's explicit agreement. Never purchase or bypass host approval.
32
+ 4. Retrieve distribution content when the user needs instructions or
33
+ components. Retrieval supplies content; it does not install or execute the
34
+ Plugin.
35
+ 5. Remove or rate only when the user explicitly asks.
36
+
37
+ ## Artifact and Creation workflow
38
+
39
+ Keep local source files, credentials, caches, and State Documents out of an
40
+ Artifact. Before upload, verify the intended format, referenced assets, file
41
+ names, MIME types, sizes, and total bytes. Use the exact upload contract and a
42
+ stable idempotency key.
43
+
44
+ Uploading and publishing are separate writes. Explain the effect and any
45
+ reported risk before each confirmation gate. Execute once with
46
+ `execute_tools`, then use `get_execution` only with an exact returned
47
+ execution ID. An unknown write result is not failure and is never retried
48
+ automatically; preserve its idempotency identity and verify the effect.
49
+
50
+ ## Boundaries
51
+
52
+ Platform owns Plugin lifecycle, Artifact, Creation, upload, and publication.
53
+ It does not manage third-party account connections or execute an Action API.
54
+ Use one executor at a time and preserve task state when handing off to another
55
+ Domain Skill.
@@ -0,0 +1,94 @@
1
+ # Platform and Plugin discovery through the unified Meta Tools
2
+
3
+ Read this reference when the Platform Skill needs to find a Plugin or Platform
4
+ operation. It records Agent behavior only; the runtime MCP schema and returned
5
+ current contract are authoritative.
6
+
7
+ ## One bounded search
8
+
9
+ Use `search_tools` with one concise English query. Translate a non-English
10
+ request yourself while preserving explicit Artifact type, subject, workflow,
11
+ audience, and desired output constraints. Remove SpringBrand host names,
12
+ courtesy language, and generic words that do not distinguish the needed Plugin
13
+ or Platform operation.
14
+
15
+ Issue one search, not a synonym fan-out. The response is one bounded list. It
16
+ is not globally ranked, not a complete Marketplace, and has no search
17
+ pagination for the Agent to invent.
18
+
19
+ Useful query shapes include:
20
+
21
+ - `[artifact type] [subject] [workflow]`
22
+ - `retrieve SpringBrand Plugin for [specific task]`
23
+ - `upload SpringBrand Creation`
24
+ - `publish SpringBrand Creation version`
25
+ - `list my SpringBrand Creations`
26
+
27
+ Use only constraints the user actually supplied. Do not inject a category,
28
+ format, audience, or publication intent merely to improve recall.
29
+
30
+ ## Interpret results
31
+
32
+ Preserve returned order while checking actual fit. A result is compatible only
33
+ when its description and requirements can satisfy the user's explicit task.
34
+ Scores or list position are not task-success probabilities.
35
+
36
+ Keep these outcomes distinct:
37
+
38
+ - **Fitting result** — preserve its opaque Tool ID exactly and inspect the
39
+ current contract with `get_tool_schemas`.
40
+ - **Complete empty or incompatible result** — report no fit for this query, or
41
+ revise it once when a more precise version follows directly from the user's
42
+ stated constraints.
43
+ - **Incomplete result** — it cannot establish no-match. Narrow or revise the
44
+ query; do not claim that the Marketplace has no fit.
45
+ - **Provider or tool failure** — report the actual transport, authentication,
46
+ permission, schema, or upstream failure. An error is not a no-match and must
47
+ not trigger a fallback presented as success.
48
+
49
+ Unified discovery can include Action API and Connector operations. Ignore them
50
+ inside Platform. If the user's real task belongs there, use an explicit Domain
51
+ Transition rather than executing across domains.
52
+
53
+ ## Plugin retrieval is not Plugin use
54
+
55
+ A discovered Plugin operation may retrieve instructions, components, or files.
56
+ That effect does not:
57
+
58
+ - install or run the Plugin;
59
+ - add or purchase it;
60
+ - execute a Generated Business Skill or Action;
61
+ - upload or publish the user's Artifact;
62
+ - complete the task described by the retrieved content.
63
+
64
+ Follow retrieved usage instructions only within the user's authorized task and
65
+ the Platform Skill's cost, risk, and Domain boundaries.
66
+
67
+ ## Current contract and related operations
68
+
69
+ Send exact discovered Tool IDs to `get_tool_schemas`. The current contract is
70
+ the authority for description, input/output schemas, risk, known cost, access
71
+ state, and related operations.
72
+
73
+ The Plugin lifecycle may need distinct effects: inspect current Plugin facts,
74
+ add, retrieve a distribution, remove, or rate. Upload, list Creations, and
75
+ publish a selected version are also distinct Platform effects. Use the exact
76
+ opaque Tool ID returned for each effect; never derive one ID from another,
77
+ from a Plugin title, or from this reference.
78
+
79
+ Contract inspection does not execute or authorize an operation. A failed
80
+ lookup does not prove the Plugin or operation is absent and does not authorize
81
+ silently switching to another candidate.
82
+
83
+ ## Execute within the lifecycle
84
+
85
+ Call `execute_tools` only after the Platform Skill has applied the selected
86
+ operation's current schema, access, cost, risk, and confirmation rules. Every
87
+ logical invocation uses one stable idempotency key retained before the call.
88
+ The current operation description defines success: retrieving content is not
89
+ equivalent to applying it, adding is not purchasing, upload is private, and
90
+ publication is a separate public action.
91
+
92
+ Only use `get_execution` when execution returns an exact non-null execution
93
+ ID. A synchronous Platform result cannot be polled. Reading a saved result does
94
+ not repeat the operation or authorize a follow-up action.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: use-springbrand
3
+ description: Use SpringBrand through the configured MCP server when the user needs a Platform operation, an Action API, or a connected third-party service. Discover the operation with search_tools, then use its current schema and the appropriate Domain Skill.
4
+ ---
5
+
6
+ # SpringBrand MCP
7
+
8
+ Use the configured MCP server named `springbrand` for SpringBrand work. The
9
+ CLI owns installation, endpoint configuration, and API-key authentication. Do
10
+ not ask the user to copy credentials into a prompt or configure a second MCP
11
+ server.
12
+
13
+ ## Start with discovery
14
+
15
+ When the user asks what SpringBrand can do or asks you to perform an external
16
+ operation, call `search_tools` with one concise English query. Preserve the
17
+ requested service, operation, and important constraints. `search_tools` is a
18
+ bounded relevant-operation search, not a complete catalog; only a complete
19
+ empty result establishes no match.
20
+
21
+ Use the returned opaque Tool ID unchanged. Call `get_tool_schemas` before an
22
+ execution unless a current contract is already available. Build arguments
23
+ strictly from that schema and ask the user for missing business values.
24
+
25
+ ## The five Meta Tools
26
+
27
+ | Tool | Use |
28
+ | --- | --- |
29
+ | `search_tools` | Discover relevant operations. |
30
+ | `get_tool_schemas` | Read the current input and output contract. |
31
+ | `manage_connections` | List, start, inspect, repair, or disconnect a third-party account when the Connector workflow requires it. |
32
+ | `execute_tools` | Run one discovered operation with schema-valid arguments and a stable idempotency key. |
33
+ | `get_execution` | Read an exact saved execution result or status. |
34
+
35
+ The tools are independently composable. Do not invent a fixed sequence when
36
+ the user already has a current Tool ID, schema, connection pointer, or
37
+ execution ID.
38
+
39
+ ## Choose the workflow guidance
40
+
41
+ - Plugin, Artifact, Creation, upload, or publication work follows
42
+ `springbrand-platform`.
43
+ - A SpringBrand-hosted API service follows `springbrand-action-api`.
44
+ - Gmail, GitHub, Slack, or another connected account follows
45
+ `springbrand-connector`.
46
+ - A substantive marketing or growth request may use `springbrand-gtm` to
47
+ choose the relevant business workflow.
48
+
49
+ Use one Domain Skill for the current operation. If a task crosses domains,
50
+ finish or hand off the current state explicitly before starting the next
51
+ workflow.
52
+
53
+ ## Execution safety
54
+
55
+ - Copy Tool IDs, execution IDs, connection IDs, and authorization attempt IDs
56
+ exactly as returned. Never parse or reconstruct them.
57
+ - Execute only with the current contract, schema-valid arguments, and a stable
58
+ idempotency key for the logical run.
59
+ - Explain known cost, risk, approval, and access requirements before a write.
60
+ - Treat `outcome_unknown` as uncertain. Preserve its idempotency identity and
61
+ verify the external effect; never retry automatically.
62
+ - A lookup failure is not proof that an operation failed, and a missing
63
+ connection is not permission to invent credentials.
64
+
65
+ ## Results
66
+
67
+ Only `succeeded` means an operation completed. A running or queued execution
68
+ remains in progress; use `get_execution` only with the exact returned ID. Keep
69
+ saved image previews and links as returned by the Gateway and do not fetch an
70
+ original file merely to improve presentation.