GitHub Node
The GitHub node provides integration with your GitHub repositories in SkyStudio workflows. You can manage issues and pull requests, access file contents, trigger workflows, and create releases.
Connection Setup and Management
To use the GitHub node, you must create a Personal Access Token in your GitHub account. OAuth or App Registration is not required; only the token and default owner information are needed.
🎬 Click to watch the video →
Creating a GitHub Personal Access Token
- Sign in to your GitHub account and click your profile photo in the upper-right corner.
- Go to Settings.
- Scroll down the left menu and open Developer settings.
- Click Personal access tokens → Fine-grained tokens.
- Click the Generate new token button.
- Give the token a Name.
- Optionally, add a Description and Expiration date.
- Select the relevant user or organization as the Resource owner.
- In the Repository access section, select the repositories you want to grant access to.
- Add the required permissions from the Permissions section:
| Permission | Description |
|---|---|
Contents → Read & Write | Used to read and write files |
Issues → Read & Write | Used to read, create, and update issues |
Pull requests → Read | Used to list Pull Requests |
Actions → Write | Used to trigger workflows |
Metadata → Read | Used to access repository information |
Releases → Read & Write | Used to list and create releases |
- Click the Generate token button and copy the generated token, which starts with
ghp_.
Note: The token is displayed in full only at the time it is created. If you lose it, you must create a new one.
Adding the Connection to SkyStudio
- Go to Application Connections from the left menu in SkyStudio.
- Click the Add New Connection button.
- Select GitHub as the provider.
- Fill in the following fields:
| Field | Description |
|---|---|
| Connection Name | A descriptive name, such as Company GitHub |
| Personal Access Token | The ghp_... token you created |
| Default Owner user/org | Default GitHub username or organization name, such as myorg or myusername |
- Click the Save button.
Assigning the Connection to the Node
After adding the GitHub node to the canvas, select the saved connection from the Application Connections dropdown in the right panel.
Tip: The Default Owner field is used by default when the Owner field in operations is left empty. You can create separate connections for multiple organizations.
Operations
The GitHub node provides 15 operations:
| Operation | Category | Description |
|---|---|---|
| List Repositories | Featured | Lists repositories of a user or organization |
| List Issues | Featured | Lists issues in a repository |
| List Pull Requests | Featured | Lists Pull Requests in a repository |
| Trigger Workflow | Featured | Triggers a GitHub Actions workflow |
| GitHub AI Assistant | Featured | Queries GitHub data using natural language |
| Repository Details | Standard | Retrieves detailed information about a repository |
| Create Issue | Standard | Creates a new issue |
| Update Issue | Standard | Updates an existing issue |
| Add Comment | Standard | Adds a comment to an issue or PR |
| List Commits | Standard | Lists commit history in a repository |
| List Branches | Standard | Lists branches in a repository |
| Get File Content | Standard | Retrieves the content of a file in a repository |
| Create / Update File | Standard | Creates a file or updates an existing file |
| List Releases | Standard | Lists releases in a repository |
| Create Release | Standard | Creates a new release |
List Repositories
Lists repositories owned by a user or organization.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner user/org | No | User or organization name to list. If left empty, Default Owner is used |
| Type | No | Repository type: all, public, private, forks, or sources |
| Limit | No | Maximum number of repositories to return |
List Issues
Lists issues in a repository with filters.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner. If left empty, Default Owner is used |
| Repository | Yes | Repository name, such as my-repo |
| State | No | Issue state: open, closed, or all |
| Labels CSV | No | Labels to filter by, separated by commas, such as bug,enhancement |
| Assignee | No | Username of the assigned user |
| Limit | No | Maximum number of issues to return |
List Pull Requests
Lists Pull Requests in a repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner. If left empty, Default Owner is used |
| Repository | Yes | Repository name |
| State | No | PR state: open, closed, or all |
| Base Branch | No | Target branch, such as main |
| Limit | No | Maximum number of PRs to return |
Trigger Workflow
Triggers a workflow defined in GitHub Actions using the workflow_dispatch event.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Workflow ID or Filename | Yes | Workflow ID or YAML file name, such as deploy.yml |
| Branch / Tag | No | Branch or tag to trigger, such as main |
| Inputs JSON | No | Input parameters to send to the workflow in JSON format |
GitHub AI Assistant
Queries GitHub data using natural language. As shown in the video, you can retrieve repository and issue information with free-text queries.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Query | Yes | GitHub query in natural language |
| System Prompt | No | System instruction that customizes the AI assistant’s behavior |
Usage Example
Query: "List the latest open bug issues"
System Prompt: "Retrieve only open issues with the 'bug' label. Write the summary in Turkish."
Repository Details
Returns detailed information about a specific repository, such as star count, language, and description.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
Create Issue
Creates a new issue in the specified repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Title | Yes | Issue title |
| Body | No | Issue description. Markdown is supported |
| Labels CSV | No | Labels to add, such as bug,enhancement |
| Assignees CSV | No | Usernames to assign, such as user1,user2 |
Update Issue
Updates the title, description, state, or labels of an existing issue.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Issue Number | Yes | Number of the issue to update |
| Title | No | New title |
| Body | No | New description |
| State | No | New state: open or closed |
| Labels CSV | No | Updated labels |
| Assignees CSV | No | Updated assignees |
Add Comment
Adds a comment to an issue or Pull Request.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Issue Number | Yes | Issue or PR number where the comment will be added |
| Body | Yes | Comment content. Markdown is supported |
List Commits
Lists commit history in a repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Branch | No | Branch name. If left empty, the default branch is used |
| Limit | No | Maximum number of commits to return |
List Branches
Lists all branches in a repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Limit | No | Maximum number of branches to return |
Get File Content
Retrieves the content of a specific file in a repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| File Path | Yes | Path of the file inside the repository, such as src/main.py |
| Branch / Ref | No | Branch or commit SHA. If left empty, the default branch is used |
Create / Update File
Adds a new file to the repository or updates an existing file and automatically creates a commit.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| File Path | Yes | Path of the file to create or update |
| Content | Yes | File content, as plain text or base64 |
| Commit Message | Yes | Commit message, such as chore: update config |
| Branch | No | Target branch. If left empty, the default branch is used |
List Releases
Lists releases in a repository.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Limit | No | Maximum number of releases to return |
Create Release
Creates a new GitHub release.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The GitHub connection to use |
| Owner | No | Repository owner |
| Repository | Yes | Repository name |
| Tag Name | Yes | Release tag, such as v1.2.0 |
| Name | No | Release title, such as v1.2.0 - New Features |
| Body | No | Release notes. Markdown is supported |
| Draft | No | If enabled, the release is saved as a draft |
| Prerelease | No | If enabled, the release is marked as a prerelease |
Quick Start Examples
Example 1: Daily Open Issue Report
A workflow that sends open bug issues to a Teams channel every morning:
Schedule (Every morning) → List Issues → LLM (summarize) → Send Channel Message (Teams)
List Issues settings:
- Repository:
my-repo - State:
open - Labels CSV:
bug - Limit:
20
Example 2: Automatic Issue Creation from Webhook
A workflow that automatically creates a GitHub issue when an error report is received:
Webhook → LLM (write issue content) → Create Issue
Create Issue settings:
- Repository:
my-repo - Title:
[Automatic] {{webhook.error_type}} - Body:
{{llm.output}} - Labels CSV:
bug,auto-generated
Example 3: GitHub AI Chatbot
A chatbot that allows users to query GitHub using natural language:
Text Input → GitHub AI Assistant → Text Output
GitHub AI Assistant settings:
- Query:
{{input.text}} - System Prompt:
"You are a software development assistant. Use GitHub repository data and respond in Turkish."
Example 4: Automatic Release Notes
A workflow that automatically creates release notes when a new tag is pushed:
Webhook (tag push) → List Commits → LLM (write release notes) → Create Release
Create Release settings:
- Repository:
my-repo - Tag Name:
{{webhook.tag}} - Name:
{{webhook.tag}} - Release - Body:
{{llm.output}}
Common Errors
| Error | Possible Cause | Solution |
|---|---|---|
401 Unauthorized | Token is invalid or expired | Create a new Fine-grained token from GitHub Settings |
403 Forbidden | Token does not have the required permission | Check token permissions and add the required permission |
404 Not Found | Repository was not found or access is missing | Check that the Owner and Repository names are correct |
422 Unprocessable Entity | Invalid field value, such as a non-existing label | Verify the label, branch, or username in GitHub |
| Empty repository list | Owner was entered incorrectly | Check the Default Owner setting or the Owner field |
Notes
- When the Owner field is left empty, the Default Owner value from the connection is used. To access a different organization, fill in the Owner field explicitly.
- Fine-grained tokens can be created for a specific repository or all repositories. If you will only work with specific repositories, grant access selectively.
- The Create / Update File operation automatically retrieves the latest SHA value when updating an existing file. Manual SHA entry is not required.
- The default validity period for Fine-grained tokens is 90 days. It is recommended to renew the token before it expires.
- The Labels CSV and Assignees CSV fields accept comma-separated values and do not require JSON format, such as
bug,wontfix.