<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Ai on zharif.my</title>
        <link>https://zharif.my/tags/ai/</link>
        <description>Recent content in Ai on zharif.my</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sat, 25 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zharif.my/tags/ai/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Agentic AI Workflow with OpenCode in Your GitHub Organization</title>
        <link>https://zharif.my/posts/opencode-github-organization/</link>
        <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://zharif.my/posts/opencode-github-organization/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1737644467636-6b0053476bb2?w=800&amp;h=400&amp;fit=crop" alt="Featured image of post Agentic AI Workflow with OpenCode in Your GitHub Organization" /&gt;&lt;h2 id=&#34;why-this-matters&#34;&gt;Why This Matters
&lt;/h2&gt;&lt;p&gt;Traditional code review is a bottleneck. You push code, wait for reviewers, hope they&amp;rsquo;re available, and ping them when you&amp;rsquo;re stuck. What if you could have an AI reviewer available 24/7 that never gets tired, never says &amp;ldquo;I&amp;rsquo;ll review it later,&amp;rdquo; and actually understands your codebase?&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s exactly what OpenCode brings to your GitHub organization. It&amp;rsquo;s an agentic coding CLI that integrates directly into your GitHub workflow — comment &lt;code&gt;/oc&lt;/code&gt; on an issue or PR, and it gets to work.&lt;/p&gt;
&lt;h2 id=&#34;my-actual-setup&#34;&gt;My Actual Setup
&lt;/h2&gt;&lt;p&gt;Here&amp;rsquo;s how I run OpenCode in my GitHub organization:&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;
  graph TB
    subgraph &amp;#34;GitHub Events&amp;#34;
        I[Issue Comment]
        PR[PR Review Comment]
    end
    
    subgraph &amp;#34;GitHub App&amp;#34;
        APP[GitHub App&amp;lt;br/&amp;gt;your-github-app]
    end
    
    subgraph &amp;#34;OpenCode Action&amp;#34;
        OC[anomalyco/opencode/github]
    end
    
    subgraph &amp;#34;GitHub Actions&amp;#34;
        GT[Generate Token]
        C[Create PRs]
    end
    
    I --&amp;gt; APP
    PR --&amp;gt; APP
    
    APP --&amp;gt; GT
    GT --&amp;gt; OC
    OC --&amp;gt; C
&lt;/pre&gt;

&lt;p&gt;I use a GitHub App for authentication instead of API keys:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GitHub App&lt;/strong&gt; — &lt;code&gt;your-github-app&lt;/code&gt; handles all authentication&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow&lt;/strong&gt; — Reusable &lt;code&gt;_opencode.yml&lt;/code&gt; template managed via Terraform&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt; — &lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt; for all tasks&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The workflow file (&lt;code&gt;.github/workflows/_opencode.yml&lt;/code&gt;) is managed as Terraform code:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-hcl&#34;&gt;# In modules/repository/opencode.tf
resource &amp;#34;github_repository_file&amp;#34; &amp;#34;opencode_ci&amp;#34; {
  repository          = github_repository.this.name
  file                = &amp;#34;.github/workflows/_opencode.yml&amp;#34;
  content             = file(&amp;#34;${path.module}/templates/_opencode.yml&amp;#34;)
  commit_message      = &amp;#34;chore: update _opencode.yml file&amp;#34;
  overwrite_on_create = true
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The GitHub App is configured with environment variables:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Variable&lt;/th&gt;
          &lt;th&gt;Value&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_APP_CLIENT_ID&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;&amp;lt;your-client-id&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_MODEL_NAME&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_GIT_USER_NAME&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;your-bot[bot]&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Required secrets are centrally stored in GitHub’s Secrets Manager (referenced via &lt;code&gt;bws_id&lt;/code&gt;) and made accessible to all repositories within the organization.
Through the GitHub management plane, workflows across the entire organization are centrally controlled—so updates only need to be made once, rather than manually applied to each repository.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture
&lt;/h2&gt;&lt;p&gt;The integration works through GitHub Actions triggered by various events:&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;
  graph TB
    subgraph &amp;#34;GitHub Events&amp;#34;
        I[Issue Comment]
        PR[PR Review Comment]
        P[Pull Request]
        S[Schedule]
    end
    
    subgraph &amp;#34;OpenCode Action&amp;#34;
        OC[anomalyco/opencode/github]
    end
    
    subgraph &amp;#34;Actions&amp;#34;
        C[Create Comments]
        B[Create Branches]
        PRS[Open PRs]
        R[Review PRs]
    end
    
    I --&amp;gt; OC
    PR --&amp;gt; OC
    P --&amp;gt; OC
    S --&amp;gt; OC
    
    OC --&amp;gt; C
    OC --&amp;gt; B
    OC --&amp;gt; PRS
    OC --&amp;gt; R
&lt;/pre&gt;

&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The quickest way to set up OpenCode in your repository:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;opencode github install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This walks you through:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Installing the OpenCode GitHub App&lt;/li&gt;
&lt;li&gt;Creating the workflow file&lt;/li&gt;
&lt;li&gt;Setting up required secrets&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;manual-setup&#34;&gt;Manual Setup
&lt;/h3&gt;&lt;p&gt;If you prefer manual configuration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install the GitHub App&lt;/strong&gt; — Go to &lt;a class=&#34;link&#34; href=&#34;https://github.com/apps/opencode-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/apps/opencode-agent&lt;/a&gt; and install it on your repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add the workflow&lt;/strong&gt; — Create &lt;code&gt;.github/workflows/_opencode.yml&lt;/code&gt;:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# .github/workflows/_opencode.yml
name: OpenCode Private Agent

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]

permissions: {}

jobs:
  opencode:
    if: |
      contains(github.event.comment.body, &amp;#39;/oc&amp;#39;) ||
      contains(github.event.comment.body, &amp;#39;/opencode&amp;#39;)
    runs-on: ${{ vars.RUNNER || &amp;#39;ubuntu-latest&amp;#39; }}
    permissions:
      contents: read
    steps:
      - name: Generate GitHub App Token
        id: generate-token
        uses: actions/create-github-app-token@v1.10c78c7865c340bc4f6099eb2f838309f1e8c3
        with:
          client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
          private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1
          persist-credentials: true
          token: ${{ steps.generate-token.outputs.token }}

      - name: Run OpenCode
        uses: anomalyco/opencode/github@v1.14.25
        env:
          GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
        with:
          model: ${{ vars.CI_AI_MODEL_NAME || &amp;#39;opencode/minimax-m2.5-free&amp;#39; }}
          use_github_token: true
          share: false&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set up the GitHub App&lt;/strong&gt; — Create a GitHub App with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repository contents (read/write)&lt;/li&gt;
&lt;li&gt;Issues (read/write)&lt;/li&gt;
&lt;li&gt;Pull requests (read/write)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add secrets&lt;/strong&gt; — Store &lt;code&gt;CI_AI_APP_PRIVATE_KEY&lt;/code&gt; in repository secrets&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;what-opencode-can-do&#34;&gt;What OpenCode Can Do
&lt;/h2&gt;&lt;h3 id=&#34;explain-issues&#34;&gt;Explain Issues
&lt;/h3&gt;&lt;p&gt;Comment on any issue:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-&#34;&gt;/opencode explain this issue&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OpenCode reads the entire issue thread and provides a clear explanation. This is invaluable for catching up on old issues or understanding complex bug reports.&lt;/p&gt;
&lt;h3 id=&#34;fix-issues&#34;&gt;Fix Issues
&lt;/h3&gt;&lt;p&gt;Want OpenCode to implement a fix? Just ask:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-&#34;&gt;/opencode fix this&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OpenCode will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new branch&lt;/li&gt;
&lt;li&gt;Implement the changes&lt;/li&gt;
&lt;li&gt;Open a PR with the fix&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;review-specific-code&#34;&gt;Review Specific Code
&lt;/h3&gt;&lt;p&gt;Comment directly on lines in the PR&amp;rsquo;s &amp;ldquo;Files&amp;rdquo; tab:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-&#34;&gt;/oc add error handling here&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OpenCode receives the exact file, line numbers, and diff context to make precise changes.&lt;/p&gt;
&lt;h3 id=&#34;automated-pr-reviews&#34;&gt;Automated PR Reviews
&lt;/h3&gt;&lt;p&gt;Run OpenCode automatically on every PR:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# .github/workflows/opencode-review.yml
name: opencode-review
on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  review:
    runs-on: ${{ vars.RUNNER || &amp;#39;ubuntu-latest&amp;#39; }}
    permissions:
      contents: read
      pull-requests: write
    steps:
      - name: Generate GitHub App Token
        id: generate-token
        uses: actions/create-github-app-token@v1.10.78
        with:
          client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
          private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}

      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
          persist-credentials: true
          token: ${{ steps.generate-token.outputs.token }}

      - uses: anomalyco/opencode/github@v1.14.25
        env:
          GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
        with:
          model: ${{ vars.CI_AI_MODEL_NAME || &amp;#39;opencode/minimax-m2.5-free&amp;#39; }}
          use_github_token: true
          prompt: |
            Review this pull request:
            - Check for code quality issues
            - Look for potential bugs
            - Suggest improvements&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Without a custom prompt, OpenCode defaults to reviewing the PR.&lt;/p&gt;
&lt;h3 id=&#34;issue-triage&#34;&gt;Issue Triage
&lt;/h3&gt;&lt;p&gt;Automatically triage new issues:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# .github/workflows/opencode-triage.yml
name: Issue Triage
on:
  issues:
    types: [opened]

jobs:
  triage:
    runs-on: ${{ vars.RUNNER || &amp;#39;ubuntu-latest&amp;#39; }}
    permissions:
      contents: write
      issues: write
    steps:
      - name: Generate GitHub App Token
        id: generate-token
        uses: actions/create-github-app-token@v1.10.78
        with:
          client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
          private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}

      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
          persist-credentials: true
          token: ${{ steps.generate-token.outputs.token }}

      - name: Generate GitHub App Token
        id: generate-token
        uses: actions/create-github-app-token@v1.10.78
        with:
          client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
          private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1
          persist-credentials: true
          token: ${{ steps.generate-token.outputs.token }}

      - name: Run OpenCode
        uses: anomalyco/opencode/github@v1.14.25
        env:
          GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
        with:
          model: ${{ vars.CI_AI_MODEL_NAME || &amp;#39;opencode/minimax-m2.5-free&amp;#39; }}
          use_github_token: true
          prompt: |
            Review this issue. If there&amp;#39;s a clear fix or relevant docs:
            - Provide documentation links
            - Add error handling guidance for code examples
            Otherwise, do not comment.&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;scheduled-automation&#34;&gt;Scheduled Automation
&lt;/h3&gt;&lt;p&gt;Run OpenCode on a schedule — perhaps weekly dependency updates or codebase housekeeping:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# .github/workflows/opencode-scheduled.yml
name: Scheduled OpenCode Task
on:
  schedule:
    - cron: &amp;#34;0 9 * * 1&amp;#34; # Every Monday at 9am UTC

jobs:
  opencode:
    runs-on: ${{ vars.RUNNER || &amp;#39;ubuntu-latest&amp;#39; }}
    permissions:
      contents: write
      issues: write
    steps:
      - name: Generate GitHub App Token
        id: generate-token
        uses: actions/create-github-app-token@v1.10.78
        with:
          client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
          private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1
          persist-credentials: true
          token: ${{ steps.generate-token.outputs.token }}

      - name: Run OpenCode
        uses: anomalyco/opencode/github@v1.14.25
        env:
          GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
        with:
          model: ${{ vars.CI_AI_MODEL_NAME || &amp;#39;opencode/minimax-m2.5-free&amp;#39; }}
          use_github_token: true
          prompt: |
            Review the codebase for any TODO comments and create a summary.
            If you find issues worth addressing, open an issue to track them.&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;configuration-options&#34;&gt;Configuration Options
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Option&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
          &lt;th&gt;Example&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;AI model to use (required). Format: &lt;code&gt;provider/model&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;prompt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Custom prompt to override default behavior&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Review this PR for bugs&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;use_github_token&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Use the generated app token (default: false)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;share&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Share the OpenCode session (default: true for public repos)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;environment-variables&#34;&gt;Environment Variables
&lt;/h3&gt;&lt;p&gt;When using a GitHub App, configure these variables:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Variable&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_APP_CLIENT_ID&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;GitHub App client ID&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_MODEL_NAME&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Model name (defaults to &lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CI_AI_APP_PRIVATE_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;GitHub App private key (stored as secret)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;github-app-token-generation&#34;&gt;GitHub App Token Generation
&lt;/h3&gt;&lt;p&gt;Instead of API keys, use the &lt;code&gt;actions/create-github-app-token&lt;/code&gt; action:&lt;/p&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;- name: Generate GitHub App Token
  id: generate-token
  uses: actions/create-github-app-token@v1.10.78
  with:
    client-id: ${{ vars.CI_AI_APP_CLIENT_ID }}
    private-key: ${{ secrets.CI_AI_APP_PRIVATE_KEY }}
    owner: ${{ github.repository_owner }}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This gives the workflow a temporary token with the GitHub App&amp;rsquo;s permissions, so PRs appear to come from your bot user (&lt;code&gt;your-bot[bot]&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id=&#34;real-world-usage&#34;&gt;Real-World Usage
&lt;/h2&gt;&lt;p&gt;Here&amp;rsquo;s how I use OpenCode in my organization:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Issue triage&lt;/strong&gt; — New issues get an initial response with relevant docs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PR reviews&lt;/strong&gt; — Every PR gets an automated review before human review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quick fixes&lt;/strong&gt; — &lt;code&gt;/oc fix this&lt;/code&gt; for obvious bugs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code explanations&lt;/strong&gt; — Understanding complex code in PRs&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key insight: OpenCode isn&amp;rsquo;t replacing human review — it&amp;rsquo;s augmenting it. It catches obvious issues, provides initial feedback, and handles tedious tasks so humans can focus on architecture and design decisions.&lt;/p&gt;
&lt;h2 id=&#34;what-most-people-get-wrong&#34;&gt;What Most People Get Wrong
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;You need API keys&amp;rdquo;&lt;/strong&gt; — Use a GitHub App instead. No external API providers needed, and PRs appear from your bot user.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;It&amp;rsquo;s a replacement for human review&amp;rdquo;&lt;/strong&gt; — No, it&amp;rsquo;s a force multiplier. Humans still review architecture and complex logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;It&amp;rsquo;s only for simple fixes&amp;rdquo;&lt;/strong&gt; — It can handle complex multi-file changes. The limit is your prompt clarity.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;when-to-use--when-not-to-use&#34;&gt;When to Use / When NOT to Use
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Use OpenCode&lt;/th&gt;
          &lt;th&gt;Do it manually&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Bug fixes with clear solutions&lt;/td&gt;
          &lt;td&gt;Architecture decisions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Documentation improvements&lt;/td&gt;
          &lt;td&gt;Security reviews&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Code style fixes&lt;/td&gt;
          &lt;td&gt;Performance optimization&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Triage and initial feedback&lt;/td&gt;
          &lt;td&gt;Complex refactoring&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quick experiments&lt;/td&gt;
          &lt;td&gt;API design reviews&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a GitHub App&lt;/strong&gt; — Go to your repository settings → Developer settings → GitHub Apps → New GitHub App&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configure permissions&lt;/strong&gt; — Give it contents, issues, and pull-requests read/write&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install the app&lt;/strong&gt; — Install it on your repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add variables&lt;/strong&gt; — Set &lt;code&gt;CI_AI_APP_CLIENT_ID&lt;/code&gt; and &lt;code&gt;CI_AI_MODEL_NAME&lt;/code&gt; in repository variables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add secrets&lt;/strong&gt; — Add &lt;code&gt;CI_AI_APP_PRIVATE_KEY&lt;/code&gt; from your GitHub App&amp;rsquo;s PEM file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create the workflow&lt;/strong&gt; — Add &lt;code&gt;.github/workflows/_opencode.yml&lt;/code&gt; with the workflow above&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Try it&lt;/strong&gt; — Comment &lt;code&gt;/oc explain this issue&lt;/code&gt; on any issue&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;rsquo;s it. Your organization now has an AI coding assistant available 24/7.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
