Configuring Connections
SkillDev tools"Set up any Backoffice integration, connection, or named provider. Always use for setup requests such as \u2018help me set up Reson8\u2019, even when a provider-specific skill also applies; also use when required configuration is missing or connection status must be verified."
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Configuring Connections skill
What this skill tells your AI
The instructions your AI receives, as published by rejot-dev/fragno in apps/backoffice/content/static/skills/configuring-connections/SKILL.md and read by ahel’s review.
Treat connection setup as a handshake: inspect → collect → configure → verify.
Required process
-
Read "/static/codemode/providers/connections.d.ts", then inspect the catalog and selected connection:
async () => { const connectionList = await connections.list({}); const status = await connections.get({ id: "telegram" }); const schema = await connections.schema({ id: "telegram" }); const setup = await connections.setup({ id: "telegram" }); return { connectionList, status, schema, setup }; };Read the matching capability skill from the available skills, such as
/static/skills/telegram-connection/SKILL.md, for provider-specific fields, webhook behavior, events, and tools. Complete when configurability, current status, required fields, masked existing values, and provider-specific setup steps are known. -
Prefer a durable, generated setup form when required values remain missing. Read
/static/skills/workflows/SKILL.mdand/static/skills/generating-backoffice-uis/SKILL.md, then define an inline workflow whose completedstep.doreturns a$uiform and whose followingstep.waitForEventcollects the submission. Build controls only for missing fields, label them from the live schema and provider skill, bind them under one response object, and submit that object with oneWorkflowEventButton. Continue configuration and verification inside durablestep.docalls so the user can finish the handshake through the rendered interface. When every required value was already supplied in the request, proceed directly without an input workflow.Treat the live fields list as the complete set of user inputs. Providers generate managed values such as webhook secrets during configuration, so do not add controls or payload properties that are absent from that list. Use submitted values only as the configuration payload; keep secrets out of labels, summaries, final output, and follow-up prose. Complete when a waiting workflow displays controls for every missing required field, or every required field already has a user-supplied or configured value.
-
Configure with a payload that matches the live schema, inside the setup workflow when step 2 created one:
async () => { return await connections.configure({ id: "telegram", payload: { botToken: "...", }, }); };When schema/setup exposes no configurable fields or identifies a managed connection, follow its manual steps and status
nextStepsinstead of callingconfigure. Complete when the configure call succeeds or the managed setup path is explicit. -
Verify and re-read status in the same setup workflow when one is active.
connections.verifyalways returns a requiredverificationresult; treatverification.okas the single authoritative verification signal. Return a generated final UI that presents the connection status, verification result, and actionable next steps while preserving the raw results as ordinary sibling fields:async () => { const result = await connections.verify({ id: "telegram" }); const finalStatus = await connections.get({ id: "telegram" }); return { result, finalStatus, verified: result.verification.ok, verificationMessage: result.verification.message, }; };Complete only when
result.verification.okis true and the rendered final result confirms the configured connection. If it is false, presentresult.verification.message,missingfields, andnextStepsin the generated UI; start another input handshake only when those next steps require another user-supplied value.
Use connections.reset({ id, confirm: id }) only for an explicit reset request, then re-read status
so the cleared state is visible.
Signals
- GitHub stars
- 61
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
configuring-connections- Source
- github.com/rejot-dev/fragno