Skip to main content

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

  1. Sign in to your GitHub account and click your profile photo in the upper-right corner.
  2. Go to Settings.
  3. Scroll down the left menu and open Developer settings.
  4. Click Personal access tokens → Fine-grained tokens.
  5. Click the Generate new token button.
  6. Give the token a Name.
  7. Optionally, add a Description and Expiration date.
  8. Select the relevant user or organization as the Resource owner.
  9. In the Repository access section, select the repositories you want to grant access to.
  10. Add the required permissions from the Permissions section:
PermissionDescription
Contents → Read & WriteUsed to read and write files
Issues → Read & WriteUsed to read, create, and update issues
Pull requests → ReadUsed to list Pull Requests
Actions → WriteUsed to trigger workflows
Metadata → ReadUsed to access repository information
Releases → Read & WriteUsed to list and create releases
  1. 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

  1. Go to Application Connections from the left menu in SkyStudio.
  2. Click the Add New Connection button.
  3. Select GitHub as the provider.
  4. Fill in the following fields:
FieldDescription
Connection NameA descriptive name, such as Company GitHub
Personal Access TokenThe ghp_... token you created
Default Owner user/orgDefault GitHub username or organization name, such as myorg or myusername
  1. 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:

OperationCategoryDescription
List RepositoriesFeaturedLists repositories of a user or organization
List IssuesFeaturedLists issues in a repository
List Pull RequestsFeaturedLists Pull Requests in a repository
Trigger WorkflowFeaturedTriggers a GitHub Actions workflow
GitHub AI AssistantFeaturedQueries GitHub data using natural language
Repository DetailsStandardRetrieves detailed information about a repository
Create IssueStandardCreates a new issue
Update IssueStandardUpdates an existing issue
Add CommentStandardAdds a comment to an issue or PR
List CommitsStandardLists commit history in a repository
List BranchesStandardLists branches in a repository
Get File ContentStandardRetrieves the content of a file in a repository
Create / Update FileStandardCreates a file or updates an existing file
List ReleasesStandardLists releases in a repository
Create ReleaseStandardCreates a new release

List Repositories

Lists repositories owned by a user or organization.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
Owner user/orgNoUser or organization name to list. If left empty, Default Owner is used
TypeNoRepository type: all, public, private, forks, or sources
LimitNoMaximum number of repositories to return

List Issues

Lists issues in a repository with filters.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner. If left empty, Default Owner is used
RepositoryYesRepository name, such as my-repo
StateNoIssue state: open, closed, or all
Labels CSVNoLabels to filter by, separated by commas, such as bug,enhancement
AssigneeNoUsername of the assigned user
LimitNoMaximum number of issues to return

List Pull Requests

Lists Pull Requests in a repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner. If left empty, Default Owner is used
RepositoryYesRepository name
StateNoPR state: open, closed, or all
Base BranchNoTarget branch, such as main
LimitNoMaximum number of PRs to return

Trigger Workflow

Triggers a workflow defined in GitHub Actions using the workflow_dispatch event.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
Workflow ID or FilenameYesWorkflow ID or YAML file name, such as deploy.yml
Branch / TagNoBranch or tag to trigger, such as main
Inputs JSONNoInput 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

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
QueryYesGitHub query in natural language
System PromptNoSystem 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

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name

Create Issue

Creates a new issue in the specified repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
TitleYesIssue title
BodyNoIssue description. Markdown is supported
Labels CSVNoLabels to add, such as bug,enhancement
Assignees CSVNoUsernames to assign, such as user1,user2

Update Issue

Updates the title, description, state, or labels of an existing issue.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
Issue NumberYesNumber of the issue to update
TitleNoNew title
BodyNoNew description
StateNoNew state: open or closed
Labels CSVNoUpdated labels
Assignees CSVNoUpdated assignees

Add Comment

Adds a comment to an issue or Pull Request.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
Issue NumberYesIssue or PR number where the comment will be added
BodyYesComment content. Markdown is supported

List Commits

Lists commit history in a repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
BranchNoBranch name. If left empty, the default branch is used
LimitNoMaximum number of commits to return

List Branches

Lists all branches in a repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
LimitNoMaximum number of branches to return

Get File Content

Retrieves the content of a specific file in a repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
File PathYesPath of the file inside the repository, such as src/main.py
Branch / RefNoBranch 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

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
File PathYesPath of the file to create or update
ContentYesFile content, as plain text or base64
Commit MessageYesCommit message, such as chore: update config
BranchNoTarget branch. If left empty, the default branch is used

List Releases

Lists releases in a repository.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
LimitNoMaximum number of releases to return

Create Release

Creates a new GitHub release.

Parameters

ParameterRequiredDescription
ConnectionYesThe GitHub connection to use
OwnerNoRepository owner
RepositoryYesRepository name
Tag NameYesRelease tag, such as v1.2.0
NameNoRelease title, such as v1.2.0 - New Features
BodyNoRelease notes. Markdown is supported
DraftNoIf enabled, the release is saved as a draft
PrereleaseNoIf 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

ErrorPossible CauseSolution
401 UnauthorizedToken is invalid or expiredCreate a new Fine-grained token from GitHub Settings
403 ForbiddenToken does not have the required permissionCheck token permissions and add the required permission
404 Not FoundRepository was not found or access is missingCheck that the Owner and Repository names are correct
422 Unprocessable EntityInvalid field value, such as a non-existing labelVerify the label, branch, or username in GitHub
Empty repository listOwner was entered incorrectlyCheck 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.