From 58a9c48ee2e6c34044f94c9990c7b6f4e6641d4d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:18:15 +0000 Subject: [PATCH 1/2] ci: use Hyper Charlie bot token for blog auto-format commits Co-Authored-By: john@hyprnote.com --- .github/workflows/blog-auto-format.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/blog-auto-format.yml b/.github/workflows/blog-auto-format.yml index 6e3d9850ca..b6165c32ee 100644 --- a/.github/workflows/blog-auto-format.yml +++ b/.github/workflows/blog-auto-format.yml @@ -12,10 +12,17 @@ jobs: contents: write steps: + - name: Generate bot token + id: bot-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.GITHUB_BOT_APP_ID }} + private-key: ${{ secrets.GITHUB_BOT_PRIVATE_KEY }} + - name: Checkout code uses: actions/checkout@v4 with: - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ steps.bot-token.outputs.token }} - name: Get changed MDX files id: changed-files @@ -40,8 +47,8 @@ jobs: - name: Commit and push formatting changes if: steps.changed-files.outputs.has_files == 'true' run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" + git config user.name "hyper-charlie[bot]" + git config user.email "hyper-charlie[bot]@users.noreply.github.com" git add -A if git diff --staged --quiet; then echo "No formatting changes needed" From 491de848f1d719d9695bdd996cf9cc46bc23bfda Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 02:15:21 +0000 Subject: [PATCH 2/2] ci: add Devin review workflow for blog article PRs Co-Authored-By: john@hyprnote.com --- .github/workflows/blog-devin-review.yml | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/blog-devin-review.yml diff --git a/.github/workflows/blog-devin-review.yml b/.github/workflows/blog-devin-review.yml new file mode 100644 index 0000000000..dce4f41f54 --- /dev/null +++ b/.github/workflows/blog-devin-review.yml @@ -0,0 +1,84 @@ +name: Blog Devin Review + +on: + pull_request: + branches: + - main + paths: + - "apps/web/content/articles/**" + +jobs: + devin-review: + if: startsWith(github.head_ref, 'blog/') + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get changed files + id: changed-files + run: | + FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD -- 'apps/web/content/articles/*.mdx' | tr '\n' ' ') + echo "files=$FILES" >> $GITHUB_OUTPUT + if [ -z "$FILES" ]; then + echo "has_files=false" >> $GITHUB_OUTPUT + else + echo "has_files=true" >> $GITHUB_OUTPUT + fi + + - name: Trigger Devin review + if: steps.changed-files.outputs.has_files == 'true' + uses: ./.github/actions/devin + with: + api_key: ${{ secrets.DEVIN_API_KEY }} + prompt: | + You are tasked with reviewing a blog article PR for Hyprnote. + + ## Context + Hyprnote is a privacy-first AI notetaking application for meetings. + Repository: fastrepl/hyprnote + PR: #${{ github.event.pull_request.number }} + Branch: ${{ github.head_ref }} + Changed files: ${{ steps.changed-files.outputs.files }} + + ## Your Task + 1. **Check out the PR branch** + - Clone the repo and check out the PR branch: `${{ github.head_ref }}` + + 2. **Read the article content** + - Read each changed MDX file listed above + - Understand the article's topic, structure, and target audience + + 3. **Review the article and leave PR comments** + Use the GitHub API to leave a review on PR #${{ github.event.pull_request.number }} in `fastrepl/hyprnote` with inline comments on specific lines. Focus on: + + - **Factual accuracy**: Flag any technical claims that seem incorrect + - **Clarity**: Identify confusing or ambiguous sentences + - **Structure**: Suggest improvements to article flow and organization + - **Missing context**: Note where additional explanation would help readers + - **Frontmatter**: Check that meta_title, display_title, meta_description, author, category, and date are all filled in properly + - **Links**: Check that any links referenced in the article are valid + + For each suggestion, leave an inline PR review comment on the specific line with: + - A clear description of the issue + - A concrete suggestion for improvement + + 4. **Post a summary comment** + After reviewing, leave a top-level PR comment with: + - Overall assessment of the article quality + - Key suggestions summarized + - Any missing elements (images, links, metadata) + + ## Important Notes + - Be constructive and specific in feedback + - Do not make changes to the code or create new commits + - Only leave review comments on the PR + - If the article looks good, still leave a brief positive review + - Focus on content quality, not formatting (dprint handles formatting separately) + title: ${{ github.run_id }}-blog-review + tags: '["blog_review"]'