A GitHub Action that integrates cyberstrike directly into your GitHub workflow.
Mention /cyberstrike in your comment, and cyberstrike will execute tasks within your GitHub Actions runner.
Leave the following comment on a GitHub issue. cyberstrike will read the entire thread, including all comments, and reply with a clear explanation.
/cyberstrike explain this issue
Leave the following comment on a GitHub issue. cyberstrike will create a new branch, implement the changes, and open a PR with the changes.
/cyberstrike fix this
Leave the following comment on a GitHub PR. cyberstrike will implement the requested change and commit it to the same PR.
Delete the attachment from S3 when the note is removed /oc
Leave a comment directly on code lines in the PR's "Files" tab. cyberstrike will automatically detect the file, line numbers, and diff context to provide precise responses.
[Comment on specific lines in Files tab]
/oc add error handling here
When commenting on specific lines, cyberstrike receives:
- The exact file being reviewed
- The specific lines of code
- The surrounding diff context
- Line number information
This allows for more targeted requests without needing to specify file paths or line numbers manually.
Run the following command in the terminal from your GitHub repo:
cyberstrike github installThis will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
-
Install the GitHub app https://github.com/apps/cyberstrike-agent. Make sure it is installed on the target repository.
-
Add the following workflow file to
.github/workflows/cyberstrike.ymlin your repo. Set the appropriatemodeland required API keys inenv.name: cyberstrike on: issue_comment: types: [created] pull_request_review_comment: types: [created] jobs: cyberstrike: if: | contains(github.event.comment.body, '/oc') || contains(github.event.comment.body, '/cyberstrike') runs-on: ubuntu-latest permissions: id-token: write steps: - name: Checkout repository uses: actions/checkout@v6 with: fetch-depth: 1 persist-credentials: false - name: Run cyberstrike uses: CyberStrikeus/CyberStrike/github@latest env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: model: anthropic/claude-sonnet-4-20250514 use_github_token: true
-
Store the API keys in secrets. In your organization or project settings, expand Secrets and variables on the left and select Actions. Add the required API keys.
This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/CyberStrikeus/CyberStrike/issues.
To test locally:
-
Navigate to a test repo (e.g.
hello-world):cd hello-world -
Run:
MODEL=anthropic/claude-sonnet-4-20250514 \ ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \ GITHUB_RUN_ID=dummy \ MOCK_TOKEN=github_pat_1234567890 \ MOCK_EVENT='{"eventName":"issue_comment",...}' \ bun /path/to/cyberstrike/github/index.tsMODEL: The model used by cyberstrike. Same as theMODELdefined in the GitHub workflow.ANTHROPIC_API_KEY: Your model provider API key. Same as the keys defined in the GitHub workflow.GITHUB_RUN_ID: Dummy value to emulate GitHub action environment.MOCK_TOKEN: A GitHub personal access token. This token is used to verify you haveadminorwriteaccess to the test repo. Generate a token here.MOCK_EVENT: Mock GitHub event payload (see templates below)./path/to/cyberstrike: Path to your cloned cyberstrike repo.bun /path/to/cyberstrike/github/index.tsruns your local version ofcyberstrike.
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey cyberstrike, summarize thread"}}}'
Replace:
"owner":"sst"with repo owner"repo":"hello-world"with repo name"actor":"fwang"with the GitHub username of commenter"number":4with the GitHub issue id"body":"hey cyberstrike, summarize thread"with comment body
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey cyberstrike, what is in my image "}}}'
Replace the image URL https://github.com/user-attachments/assets/xxxxxxxx with a valid GitHub attachment (you can generate one by commenting with an image in any issue).
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey cyberstrike, summarize thread"}}}'
MOCK_EVENT='{"eventName":"pull_request_review_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"pull_request":{"number":7},"comment":{"id":1,"body":"hey cyberstrike, add error handling","path":"src/components/Button.tsx","diff_hunk":"@@ -45,8 +45,11 @@\n- const handleClick = () => {\n- console.log('clicked')\n+ const handleClick = useCallback(() => {\n+ console.log('clicked')\n+ doSomething()\n+ }, [doSomething])","line":47,"original_line":45,"position":10,"commit_id":"abc123","original_commit_id":"def456"}}}'