forge-connector
Forge Connector
Builds a graph:connector Forge app that ingests external data into Atlassian's Teamwork Graph so it appears in Rovo Search and Rovo Chat.
Critical Rules
- Must install in Jira — Apps using Teamwork Graph modules must be installed on a Jira site. Confluence-only installs will not work.
- Never ask for credentials in chat — Direct users to run
forge loginin their own terminal. - Always run the scaffold script yourself — Do not only give manual instructions; run
scripts/scaffold_connector.pyto generate the boilerplate. - Always ask the user for their Atlassian site URL when install is needed — never discover or guess it.
- Atlassian deletes data on disconnect — When
action = 'DELETED', the app only needs to clean up local state; Atlassian removes the Teamwork Graph data automatically. - Handler arguments are passed directly — Forge passes the request object as the first argument to handlers, NOT nested under
event.payload. Config values are atrequest.configProperties, NOTevent.payload.config. This is the most common source ofTypeError: Cannot destructure property of undefinederrors. - Use
@forge/kvsfor storage — Importkvsfrom@forge/kvs. Do NOT use@forge/storage— itsstorageexport isundefinedat runtime in connector functions. - Use
graphnamed export from@forge/teamwork-graph— The correct import isconst { graph } = require('@forge/teamwork-graph'). Callgraph.setObjects({ objects, connectionId }). Do NOT importsetObjectsas a named export directly. validateConnectionHandlermust return{ success, message }— Do NOT throw an Error. Return{ success: false, message: '...' }to reject,{ success: true }to accept.functiondeclarations belong undermodules— Inmanifest.yml,function:is a key undermodules:, not a top-level key. Placing it at the top level causes a lint error.formConfigurationusesformarray withtype: header— Do NOT usefields:orbeforeYouBegin:. The correct format usesform: [{ key, type: header, title, description, properties: [...] }].- Scopes are
read/write/delete:object:jira— Useread:object:jira,write:object:jira,delete:object:jira. The scopesread:graph:teamworkandwrite:graph:teamworkare invalid and will failforge lint.
More from atlassian/forge-skills
forge-app-builder
Guides building, deploying, troubleshooting, and installing Atlassian Forge apps — custom extensions built with the Forge CLI (forge create, forge deploy, forge install). Use when the user wants to create a Forge app (issue panels, dashboard gadgets, Confluence macros, global pages), is encountering Forge CLI errors or deployment issues (e.g. forge install failures, environment errors), or needs help with Forge-specific concepts like resolvers, UI Kit, manifest scopes, or developer spaces. Do not use for general Jira configuration, automation rules, JQL queries, or Atlassian REST API usage outside of a Forge app context.
51forge-debugger
Diagnoses and fixes issues in Atlassian Forge apps. Use this skill whenever a Forge app has errors, crashes, shows blank UI, fails to deploy, doesn't appear after installation, has permission issues, or produces unexpected output. Trigger on any mention of forge logs, forge deploy errors, resolver errors, blank panels, missing scopes, Custom UI not rendering, production vs dev discrepancies, or any Jira/Confluence app that "stopped working". Also trigger when the user asks to debug, troubleshoot, investigate, or fix a Forge app issue — even if they haven't used the word "Forge" but describe a Jira panel or Confluence macro acting up.
49forge-app-review
>
48