Integrations
Plan GitHub repository actions from workflow inputs
github-integration is a selected-action workflow adapter for Github.
overview
What github-integration does
Select a GitHub resource and operation, supply its repository fields, and retain a JSONL result. The explicit dry-run input generates a request plan without calling GitHub. Normal execution uses a token and can create or change repository data.
Source-declared actions: issue.create, issue.get, issue.list, issue.comment, issue.addLabels, pr.create, pr.get, pr.comment, file.get, workflow.dispatch.
A FILE of JSONL results, with an ok field per processed item. Dry-run rows include dry_run: true and planning fields, not a provider response or proof of execution. The registered contract also exposes a FOLDER output. Payload and text fields may contain supplied content; use synthetic data for shared examples.
Native executable tests cover all 10 declared actions using owned loopback HTTP fixtures, plus credential/error cases. No real provider calls were made. A private three-node platform dry-run planning workflow also passed with a downloaded plan and verifier. Public image and source/notices directions are available. The original tool entry is available in the public Library. Keep private platform planning separate from provider execution.
source hub.docker.com/r/nenadzaric/skills-integrations-github-integration
use cases
Where github-integration fits
Plan an issue request
Preview the method, URL and payload for an issue.create fixture without sending it.
Read repository data
Use the selected issue.get, issue.list, pr.get or file.get operation when a workflow needs provider data; the native tests use owned HTTP fixtures.
Process a repository action
Select comment, labels, pull request creation or workflow dispatch deliberately. These normal-mode operations may mutate GitHub data.
reference
github-integration inputs and flags
| Name | Type | Flag | Description |
|---|---|---|---|
| repo | STRING | --repo | Repository as owner/name (e.g. acme/app) |
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"repo":"acme/app","title":"Finding: XSS","body":"…","labels":"security"} |
| token | STRING | --token | GitHub token ; wire to ${{secrets.GITHUB_TOKEN}} Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| resource | STRING | --resource | GitHub resource: issue | pr | file | workflow (default: issue) |
| operation | STRING | --operation | Operation by resource ; issue: create|get|list|comment|addLabels; pr: create|get|comment; file: get; workflow: dispatch |
Showing key inputs. github-integration exposes 22 inputs in total.
Full flag reference (22 inputs)
| Name | Type | Flag | Description |
|---|---|---|---|
| ref | STRING | --ref | Branch, tag, or SHA (file.get, workflow.dispatch) |
| base | STRING | --base | Base branch (pr.create) |
| body | STRING | --body | Body markdown (issue.create, pr.create) |
| head | STRING | --head | Head branch (pr.create) |
| path | STRING | --path | File path in the repo (file.get) |
| repo | STRING | --repo | Repository as owner/name (e.g. acme/app) |
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"repo":"acme/app","title":"Finding: XSS","body":"…","labels":"security"} |
| limit | STRING | --limit | Max results for issue.list (default: 20) |
| state | STRING | --state | Issue list state: open | closed | all (default: open) |
| title | STRING | --title | Title (issue.create, pr.create) |
| token | STRING | --token | GitHub token ; wire to ${{secrets.GITHUB_TOKEN}} Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| labels | STRING | --labels | Comma-separated labels (issue.create, issue.addLabels) |
| comment | STRING | --comment | Comment body (issue.comment, pr.comment) |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| resource | STRING | --resource | GitHub resource: issue | pr | file | workflow (default: issue) |
| workflow | STRING | --workflow | Workflow file name or ID (workflow.dispatch) |
| assignees | STRING | --assignees | Comma-separated GitHub usernames (issue.create) |
| operation | STRING | --operation | Operation by resource ; issue: create|get|list|comment|addLabels; pr: create|get|comment; file: get; workflow: dispatch |
| pr-number | STRING | --pr-number | Pull request number (pr.get / comment) |
| issue-number | STRING | --issue-number | Issue number (issue.get / comment / addLabels) |
| workflow-inputs | STRING | --workflow-inputs | Optional JSON object of workflow inputs (workflow.dispatch) |
| continue-on-error | BOOLEAN | --continue-on-error | Keep going (and exit 0) when an individual call fails |
example
Run github-integration
github-integration --dry-run --resource issue --operation create --repo fixture/owned --title "D074 owned plan fixture" --output ./plan.jsonl{"resource": "issue", "operation": "create", "repo": "fixture/owned", "ok": true, "dry_run": true, "method": "POST", "url": "https://api.github.com/repos/fixture/owned/issues", "payload": {"title": "D074 owned plan fixture"}, "params": null}guidance
Choosing github-integration
Use this service-specific adapter when the selected provider action and typed fields match the workflow. Dry-run planning, native HTTP-mock acceptance and actual provider execution are separate capabilities. A generic HTTP client may suit API routes this adapter does not expose.
faq
github-integration questions
related
More Integrations tools
jira-integration
Select an issue operation and supply its site and issue fields. Dry-run generates a method, URL and payload plan; it does not create a Jira issue or establish that an account has the required access.
notion-integration
Supply the selected resource, operation and page/database fields. Dry-run returns a planned API request without calling Notion. Normal execution may read, create, update or archive data depending on the operation.
slack-integration
Choose the Slack resource and operation, then supply message or lookup fields. Dry-run reports a message plan without contacting Slack. It does not verify a webhook, workspace membership, delivery or media content.
telegram-integration
Select message.sendMessage, message.sendPhoto or message.sendDocument and provide the intended chat and input fields. Explicit dry-run emits a plan without calling Telegram. Normal-mode media operations upload the supplied FILE using multipart requests.
Run github-integration yourself
Complete retained JSONL plan from the current notices1 image using synthetic owned fixture data. This was dry-run planning, not a provider request or delivered message. Native HTTP-mock action coverage is recorded separately.
Facts on this page come from the live Trickest tool library.