Skip to content

chore(standards): synced file(s) with hallelx2/dev-standards - #5

Open
hallelx2 wants to merge 10 commits into
mainfrom
repo-sync/dev-standards/default
Open

chore(standards): synced file(s) with hallelx2/dev-standards#5
hallelx2 wants to merge 10 commits into
mainfrom
repo-sync/dev-standards/default

Conversation

@hallelx2

@hallelx2 hallelx2 commented Jun 13, 2026

Copy link
Copy Markdown
Owner

synced local file(s) with hallelx2/dev-standards.

Changed files
  • created local AGENTS.md from remote AGENTS.md
  • created local .github/copilot-instructions.md from remote .github/copilot-instructions.md
  • created local directory .github/agents/ and copied all sub files/folders from remote directory .github/agents/
  • created local .github/instructions/backend.instructions.md from remote .github/instructions/backend.instructions.md
  • created local .github/instructions/frontend.instructions.md from remote .github/instructions/frontend.instructions.md
  • created local .github/instructions/security.instructions.md from remote .github/instructions/security.instructions.md
  • created local .github/workflows/security.yml from remote .github/workflows/security.yml
  • created local .github/workflows/security.reusable.yml from remote .github/workflows/security.reusable.yml
  • created local .github/workflows/jules-review.yml from remote .github/workflows/jules-review.yml
  • synced local .github/dependabot.yml with remote .github/dependabot.yml

This PR was created automatically by the repo-file-sync-action workflow run #30801469164

Summary by CodeRabbit

  • New Features

    • Added automated security scanning for pull requests and pushes, including secret, code, dependency, and configuration checks.
    • Added specialized automated review guidance for backend, frontend, security, and test reliability concerns.
    • Added shared engineering and pull-request standards.
  • Chores

    • Improved automated dependency update configuration for GitHub Actions, Go, and npm packages.

Copilot AI review requested due to automatic review settings June 13, 2026 02:11
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added shared review standards, specialized agent configurations, automated security scanning workflows, conditional pull-request security reviews, and updated Dependabot schedules.

Changes

Review and security automation

Layer / File(s) Summary
Repository review guidance
.github/copilot-instructions.md, AGENTS.md, .github/instructions/*
Added shared review standards for repository workflow, backend, frontend, security, correctness, testing, and Vectorless-specific controls.
Specialized review agents
.github/agents/*
Added backend, frontend, security, and test-reliability reviewer configurations with scoped tools, review criteria, citations, and fix requirements.
Security scanning workflows
.github/workflows/security.yml, .github/workflows/security.reusable.yml
Added pull-request and main push triggers for secret scanning, SAST, Go, Node, Python, and Trivy checks.
PR and dependency automation
.github/workflows/jules-review.yml, .github/dependabot.yml
Added conditional Jules security reviews and configured weekly Dependabot updates for GitHub Actions, Go modules, and npm dependencies.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies a standards sync from hallelx2/dev-standards, which matches the primary purpose of the changes.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch repo-sync/dev-standards/default

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai

sourcery-ai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Reviewer's Guide

Adds shared AI agent standards, review rubrics, and reusable security/Jules review GitHub workflows by syncing them from hallelx2/dev-standards, enabling consistent automated reviews and security scanning across the repo.

Sequence diagram for automated Jules PR security review workflow

sequenceDiagram
  actor Developer
  participant GitHub
  participant jules_review_workflow as jules-review.yml
  participant Guard_step as Guard_only_run_when_a_Jules_key_is_configured
  participant Jules_action as sanjay3290/jules-pr-reviewer@main

  Developer->>GitHub: open/synchronize/ready_for_review PR
  GitHub->>jules_review_workflow: trigger pull_request event
  jules_review_workflow->>Guard_step: run guard step
  alt JULES_API_KEY present
    Guard_step-->>jules_review_workflow: enabled=true
    jules_review_workflow->>Jules_action: run Jules security review
    Jules_action-->>GitHub: post security-focused PR review
  else JULES_API_KEY missing
    Guard_step-->>GitHub: log skipping message
  end
Loading

File-Level Changes

Change Details Files
Introduce repository-wide AI/agent standards for development and review.
  • Add AGENTS.md as the canonical brief for all AI agents interacting with the codebase, defining workflow expectations, review bar, language-specific conventions, and security requirements.
  • Document Vectorless-specific security rules around BYOK keys and multi-tenant isolation to guide future implementation and reviews.
AGENTS.md
Configure baseline instructions for Copilot-powered PR reviews.
  • Add a focused rubric for Copilot to review PRs in a fixed order (right thing, done right, safe), emphasizing security, tests, and multi-tenant isolation.
  • Clarify expectations for referencing issues (Closes HAL-), citing file:line, and preferring high-signal findings.
.github/copilot-instructions.md
Add reusable security scanning workflow and caller workflow for CI.
  • Create a reusable security.reusable.yml workflow that runs gitleaks for secrets, Trivy for dependency/config/secrets scanning, and gosec for conditional Go SAST.
  • Create a top-level security.yml workflow that runs on PRs and main pushes and delegates to the reusable workflow with inherited secrets.
  • Set minimal permissions needed for security scanning jobs and explain why CodeQL is excluded here and expected to be configured per-repo.
.github/workflows/security.reusable.yml
.github/workflows/security.yml
Automate optional security-focused Jules PR reviews via GitHub Actions.
  • Add a jules-review workflow that triggers on PR events and conditionally invokes the sanjay3290/jules-pr-reviewer action when JULES_API_KEY is configured.
  • Ensure the workflow safely no-ops when the secret is absent and passes a strict security-focused review prompt pointing to the security-reviewer agent spec.
.github/workflows/jules-review.yml
Define specialized AI reviewer agents for backend, frontend, security, and test reliability.
  • Add backend-reviewer.agent.md to enforce Go backend standards around error handling, concurrency, context usage, data access, and testing.
  • Add frontend-reviewer.agent.md to enforce TypeScript/Next.js standards for server/client boundaries, XSS, a11y, performance, and brand consistency.
  • Add security-reviewer.agent.md to provide an adversarial application-security rubric focusing on authz, multi-tenant isolation, secrets/BYOK, injection/SSRF, crypto, and dependency risk.
  • Add test-reliability-reviewer.agent.md to ensure tests prove behavior, cover edge cases, remain deterministic, and support reliable changes.
.github/agents/backend-reviewer.agent.md
.github/agents/frontend-reviewer.agent.md
.github/agents/security-reviewer.agent.md
.github/agents/test-reliability-reviewer.agent.md
Add path-scoped instruction files that bind reviewer rubrics to file types in the repo.
  • Add backend.instructions.md that applies Go backend review guidance to all *.go files, focusing on error handling, concurrency, context, resources, data access, and tests.
  • Add frontend.instructions.md that applies TS/TSX/CSS frontend review guidance, including security, type safety, a11y, performance, and brand consistency.
  • Add security.instructions.md that applies a security review rubric to all files, emphasizing authorization, multi-tenant isolation, BYOK handling, injection/SSRF, crypto, and dependency risk.
.github/instructions/backend.instructions.md
.github/instructions/frontend.instructions.md
.github/instructions/security.instructions.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • In .github/workflows/security.reusable.yml, consider pinning securego/gosec@master to a specific release tag or SHA to avoid unexpected behavior when the master branch changes.
  • Similarly, in .github/workflows/jules-review.yml, using sanjay3290/jules-pr-reviewer@main could introduce breaking changes over time; pinning to a version or commit SHA would make the workflow more stable and auditable.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `.github/workflows/security.reusable.yml`, consider pinning `securego/gosec@master` to a specific release tag or SHA to avoid unexpected behavior when the `master` branch changes.
- Similarly, in `.github/workflows/jules-review.yml`, using `sanjay3290/jules-pr-reviewer@main` could introduce breaking changes over time; pinning to a version or commit SHA would make the workflow more stable and auditable.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR syncs shared engineering standards and GitHub automation from hallelx2/dev-standards into this repository, establishing consistent AI-agent guidance and baseline security/review workflows.

Changes:

  • Adds repo-level agent/review standards (AGENTS.md) and Copilot review baseline instructions.
  • Introduces path-scoped review rubrics and specialized agent profiles under .github/instructions/ and .github/agents/.
  • Adds security scanning and optional “Jules” automated review workflows under .github/workflows/.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
AGENTS.md Adds shared engineering/review standards for human + AI agents.
.github/copilot-instructions.md Adds baseline Copilot PR review rubric and priorities.
.github/instructions/backend.instructions.md Adds Go-specific review checklist for .go files.
.github/instructions/frontend.instructions.md Adds TypeScript/Next/CSS review checklist for frontend files.
.github/instructions/security.instructions.md Adds universal security review checklist applied to all files.
.github/agents/backend-reviewer.agent.md Defines a specialized backend reviewer agent profile.
.github/agents/frontend-reviewer.agent.md Defines a specialized frontend reviewer agent profile.
.github/agents/security-reviewer.agent.md Defines an adversarial security reviewer agent profile.
.github/agents/test-reliability-reviewer.agent.md Defines a test/reliability reviewer agent profile.
.github/workflows/security.yml Adds a caller workflow that runs the shared security reusable workflow on PRs and main pushes.
.github/workflows/security.reusable.yml Adds reusable security scanners (gitleaks, Trivy, gosec) for consistent cross-repo scanning.
.github/workflows/jules-review.yml Adds optional automated Jules security review workflow gated on JULES_API_KEY.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +21 to +22
uses: ./.github/workflows/security.reusable.yml
secrets: inherit
Comment thread .github/workflows/security.reusable.yml Outdated
Comment on lines +23 to +26
- name: gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ github.token }}
Comment thread .github/workflows/security.reusable.yml Outdated
Comment on lines +33 to +35
- name: Trivy filesystem scan
uses: aquasecurity/[email protected]
with:
Comment on lines +52 to +56
- name: gosec
if: steps.detect.outputs.is_go == 'true'
uses: securego/gosec@master
with:
args: -no-fail -fmt text ./...
Comment on lines +30 to +35
- name: Jules security review
if: steps.guard.outputs.enabled == 'true'
uses: sanjay3290/jules-pr-reviewer@main
with:
jules-api-key: ${{ secrets.JULES_API_KEY }}
github-token: ${{ github.token }}
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch 2 times, most recently from fc89bdd to 21ae366 Compare June 13, 2026 02:20
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch 5 times, most recently from 6f0b3aa to 0f70703 Compare June 15, 2026 11:50
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch 2 times, most recently from 3c981ce to 29107cc Compare June 29, 2026 10:27
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch from 29107cc to a84e2cf Compare July 6, 2026 07:30
steps:
- uses: actions/checkout@v4
- name: Install Trivy (latest binary — avoids the action's broken setup-trivy pin)
run: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Local reference — the reusable file is synced into THIS repo too, so each repo
# is self-contained and this works whether dev-standards is public or private.
uses: ./.github/workflows/security.reusable.yml
secrets: inherit
Comment thread .github/dependabot.yml
Comment on lines +6 to +10
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
labels: [dependencies, security]
Comment thread .github/dependabot.yml
Comment on lines +19 to +24
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 5
commit-message:
prefix: "ci"
include: scope
labels: [dependencies, security]
name: Secrets (gitleaks)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Node/TS deps (npm audit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
id: detect
run: |
if [ -f package.json ]; then echo "is_node=true" >> "$GITHUB_OUTPUT"; else echo "is_node=false" >> "$GITHUB_OUTPUT"; fi
- uses: actions/setup-node@v4
name: Python deps + SAST (pip-audit + bandit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
id: detect
run: |
if ls requirements*.txt pyproject.toml setup.py >/dev/null 2>&1; then echo "is_py=true" >> "$GITHUB_OUTPUT"; else echo "is_py=false" >> "$GITHUB_OUTPUT"; fi
- uses: actions/setup-python@v5
name: Vulns + misconfig (Trivy)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch 3 times, most recently from 5039b38 to 4cd357d Compare July 13, 2026 08:54
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch from 4cd357d to 24d8294 Compare July 20, 2026 08:44
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch from 24d8294 to 9510c62 Compare July 27, 2026 09:36
hallelx2 added 3 commits August 3, 2026 09:30
Synced AI-review standards from hallelx2/dev-standards.
…m remote '.github/copilot-instructions.md'

Synced AI-review standards from hallelx2/dev-standards.
…b/agents/'

Synced AI-review standards from hallelx2/dev-standards.
hallelx2 added 7 commits August 3, 2026 09:30
…tions.md' from remote '.github/instructions/backend.instructions.md'

Synced AI-review standards from hallelx2/dev-standards.
…ctions.md' from remote '.github/instructions/frontend.instructions.md'

Synced AI-review standards from hallelx2/dev-standards.
…ctions.md' from remote '.github/instructions/security.instructions.md'

Synced AI-review standards from hallelx2/dev-standards.
… remote '.github/workflows/security.yml'

Synced AI-review standards from hallelx2/dev-standards.
…yml' from remote '.github/workflows/security.reusable.yml'

Synced AI-review standards from hallelx2/dev-standards.
…from remote '.github/workflows/jules-review.yml'

Synced AI-review standards from hallelx2/dev-standards.
….github/dependabot.yml'

Synced AI-review standards from hallelx2/dev-standards.
@hallelx2
hallelx2 force-pushed the repo-sync/dev-standards/default branch from 9510c62 to ec38521 Compare August 3, 2026 09:31

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/security.reusable.yml:
- Around line 37-52: Make the security workflow fail when scanners detect
vulnerabilities or cannot complete: in .github/workflows/security.reusable.yml
lines 37-52 remove Semgrep’s || true while retaining if: always() and stop
suppressing SARIF upload failures; remove || true at lines 67-71 for
govulncheck, remove -no-fail at lines 82-86 for gosec, propagate
dependency-resolution and npm audit failures at lines 101-105, propagate
pip-audit and Bandit failures at lines 120-125, and configure Trivy at lines
134-135 with a non-zero exit code for findings meeting the severity threshold.
- Around line 32-33: Update the container image in the workflow’s container
configuration from the mutable semgrep/semgrep reference to a maintained Semgrep
release pinned by its immutable SHA-256 digest; preserve the existing
container-based workflow behavior.

In `@AGENTS.md`:
- Line 12: Update the “Done” guidance in AGENTS.md to include the repository’s
actual lint command and replace the Go test example with the required go test
-race command, while retaining the build and test requirements. Create and track
a Linear issue before merge, and require all build, race-test, and lint checks
to pass before considering the work complete.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7bc303ee-cac8-4432-aee4-5fd609b06d47

📥 Commits

Reviewing files that changed from the base of the PR and between c84ce26 and ec38521.

📒 Files selected for processing (13)
  • .github/agents/backend-reviewer.agent.md
  • .github/agents/frontend-reviewer.agent.md
  • .github/agents/security-reviewer.agent.md
  • .github/agents/test-reliability-reviewer.agent.md
  • .github/copilot-instructions.md
  • .github/dependabot.yml
  • .github/instructions/backend.instructions.md
  • .github/instructions/frontend.instructions.md
  • .github/instructions/security.instructions.md
  • .github/workflows/jules-review.yml
  • .github/workflows/security.reusable.yml
  • .github/workflows/security.yml
  • AGENTS.md

Comment on lines +32 to +33
container:
image: semgrep/semgrep

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Files matching workflow name:\n'
fd -a 'security\.reusable\.yml$' . || true

printf '\nRelevant workflow excerpt:\n'
if [ -f .github/workflows/security.reusable.yml ]; then
  nl -ba .github/workflows/security.reusable.yml | sed -n '1,80p'
else
  echo '.github/workflows/security.reusable.yml not found'
fi

printf '\nSearch for semgrep image pins and GitHub Actions reusable workflow refs:\n'
rg -n "semgrep/semgrep|uses: .*@|container:|image:" .github/workflows -S || true

printf '\nGit diff stat:\n'
git diff --stat HEAD~1..HEAD 2>/dev/null || git diff --stat || true

Repository: hallelx2/llmgate

Length of output: 252


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Repository root files (top-level):\n'
find . -maxdepth 2 -type f | sort | sed 's#^\./##' | head -150

printf '\nWorkflow file presence:\n'
if [ -f .github/workflows/security.reusable.yml ]; then
  echo "FOUND .github/workflows/security.reusable.yml"
else
  echo "MISSING .github/workflows/security.reusable.yml"
fi

printf '\nWorkflow excerpt:\n'
if [ -f .github/workflows/security.reusable.yml ]; then
  awk '{printf "%5d\t%s\n", NR, $0}' .github/workflows/security.reusable.yml | sed -n '1,120p'
fi

printf '\nSearch for semgrep/semgrep and container image refs:\n'
rg -n 'semgrep/semgrep|uses: .*@|container:|image:' .github/workflows . 2>/dev/null || true

printf '\nChanged workflow files (if available):\n'
git diff --name-only HEAD~1..HEAD 2>/dev/null || true

Repository: hallelx2/llmgate

Length of output: 8010


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Semgrep image ref from workflow:\n'
python3 - <<'PY'
path=".github/workflows/security.reusable.yml"
for i, line in enumerate(open(path), 1):
    if "image:" in line:
        print(f"{i}: {line.strip()}")
        s=line.strip().split("image:",1)[1].strip().split("#",1)[0].strip()
        print("ref:", s)
        print("has_tag:", ":" in s and "@" not in s.split(":",1)[1])
        print("has_digest:", "@" in s)
PY

printf '\nSimilar Docker image refs in .github/workflows:\n'
python3 - <<'PY'
import pathlib,re
for p in pathlib.Path(".github/workflows").glob("*.yml"):
    text=p.read_text()
    for i,line in enumerate(text.splitlines(),1):
        if re.search(r"\bimage:\s*[^#]+#",line) or re.search(r"\bimage:\s*[^#]+$",line):
            print(f"{p}:{i}: {line.strip()}")
PY

Repository: hallelx2/llmgate

Length of output: 384


🌐 Web query:

semgrep/semgrep Docker image tags latest semgrep version

💡 Result:

The semgrep/semgrep Docker image provides the latest version of Semgrep under the:latest tag [1][2]. To use the latest version, you can pull and run the image using the following commands: docker pull semgrep/semgrep:latest docker run --rm -v "${PWD}:/src" semgrep/semgrep semgrep --version The:latest tag is the standard way to ensure you are running the most recent stable release [2][3]. If you need to pin your configuration to a specific version instead of using:latest, you can use the semantic version tags directly, such as semgrep/semgrep:1.170.0 [4]. For detailed information on image tags, you can view the official Docker Hub repository [1][5]. Additionally, the Semgrep documentation provides guidance on running specific versions in various CI/CD environments if you need to maintain consistency across deployments [4][6].

Citations:


Pin the Semgrep container to an immutable digest.

semgrep/semgrep without a tag resolves to the mutable latest image from Docker Hub. Use a maintained Semgrep release and pin it with a SHA-256 digest before this step runs with workflow permissions.

Proposed fix
-      image: semgrep/semgrep
+      image: semgrep/semgrep:<version>`@sha256`:<verified-manifest-digest>
🧰 Tools
🪛 zizmor (1.28.0)

[error] 33-33: unpinned image references (unpinned-images): container image is unpinned

(unpinned-images)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/security.reusable.yml around lines 32 - 33, Update the
container image in the workflow’s container configuration from the mutable
semgrep/semgrep reference to a maintained Semgrep release pinned by its
immutable SHA-256 digest; preserve the existing container-based workflow
behavior.

Sources: Coding guidelines, Linters/SAST tools

Comment on lines +37 to +52
run: |
semgrep scan \
--config p/owasp-top-ten \
--config p/cwe-top-25 \
--config p/secrets \
--config p/javascript \
--config p/typescript \
--config p/python \
--config p/github-actions \
--sarif --output semgrep.sarif || true
- name: Upload Semgrep SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: semgrep.sarif
continue-on-error: true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Make detected vulnerabilities fail the workflow.

All scanners suppress their failure status. The workflow remains green when a scanner detects a vulnerability or cannot complete. This prevents the new security workflow from enforcing its results.

  • .github/workflows/security.reusable.yml#L37-L52: Remove || true from Semgrep. Keep if: always() for SARIF upload, but do not suppress upload failure.
  • .github/workflows/security.reusable.yml#L67-L71: Remove || true from govulncheck.
  • .github/workflows/security.reusable.yml#L82-L86: Remove -no-fail from gosec.
  • .github/workflows/security.reusable.yml#L101-L105: Do not ignore failed dependency resolution or npm audit.
  • .github/workflows/security.reusable.yml#L120-L125: Do not ignore pip-audit or Bandit failures.
  • .github/workflows/security.reusable.yml#L134-L135: Use a non-zero Trivy exit code when findings meet the configured severity threshold.

As per coding guidelines, “Review changes for correctness, error handling, behavior-proving tests, simplicity, and absence of dead code or over-engineering.”

🧰 Tools
🪛 GitHub Check: Semgrep OSS

[warning] 49-49: Semgrep Finding: yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
GitHub Actions step uses a mutable tag or branch reference. Tags and branch names can be silently repointed by the action owner, enabling supply-chain attacks — as seen in the trivy-action and kics-github-action compromises. Pin the reference to a full 40-character commit SHA instead, e.g. uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608.

📍 Affects 1 file
  • .github/workflows/security.reusable.yml#L37-L52 (this comment)
  • .github/workflows/security.reusable.yml#L67-L71
  • .github/workflows/security.reusable.yml#L82-L86
  • .github/workflows/security.reusable.yml#L101-L105
  • .github/workflows/security.reusable.yml#L120-L125
  • .github/workflows/security.reusable.yml#L134-L135
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/security.reusable.yml around lines 37 - 52, Make the
security workflow fail when scanners detect vulnerabilities or cannot complete:
in .github/workflows/security.reusable.yml lines 37-52 remove Semgrep’s || true
while retaining if: always() and stop suppressing SARIF upload failures; remove
|| true at lines 67-71 for govulncheck, remove -no-fail at lines 82-86 for
gosec, propagate dependency-resolution and npm audit failures at lines 101-105,
propagate pip-audit and Bandit failures at lines 120-125, and configure Trivy at
lines 134-135 with a non-zero exit code for findings meeting the severity
threshold.

Source: Coding guidelines

Comment thread AGENTS.md
- **One issue → one branch → one PR → one outcome.** Use the Linear branch name (`halleluyaholudele/hal-<n>-<title>`). Never commit to `main` directly.
- Put **`Closes HAL-<n>`** in the **PR description** so Linear links + auto-closes on merge.
- **No AI attribution** in commits, PRs, or any artifact. Author as the user alone.
- "Done" = real build + tests + lint pass (run them — `go build ./... && go test ./...`, `bun run build` / `npm run build`), not just typecheck.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
printf '--- AGENTS.md around lines 1-40 ---\n'
if [ -f AGENTS.md ]; then
  cat -n AGENTS.md | sed -n '1,45p'
else
  printf 'AGENTS.md not found\n'
fi

printf '\n--- backend.instructions.md around lines 1-15 ---\n'
if [ -f .github/instructions/backend.instructions.md ]; then
  cat -n .github/instructions/backend.instructions.md | sed -n '1,15p'
else
  printf '.github/instructions/backend.instructions.md not found\n'
fi

printf '\n--- lint-related files and scripts ---\n'
git ls-files | rg '(^AGENTS\.md$|(^\.github/instructions/)|(^package\.json$|(^go\.mod$|(^Makefile$|(^Taskfile\.)|(^lefthook|(^pre-commit|(^.golangci\.|(^biome|(^eslint|(^ox|(^oxlint|(^revive|(^staticcheck|(^golangci|(^vitest|(^jest|(^tslint$))' || true

printf '\n--- package.json scripts if present ---\n'
if [ -f package.json ]; then
  cat package.json | jq '.scripts // {}'
fi

printf '\n--- go.mod module path ---\n'
if [ -f go.mod ]; then sed -n '1,10p' go.mod; fi

Repository: hallelx2/llmgate

Length of output: 245


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- AGENTS.md around lines 1-40 ---'
if [ -f AGENTS.md ]; then
  cat -n AGENTS.md | sed -n '1,45p'
else
  echo 'AGENTS.md not found'
fi

printf '\n%s\n' '--- backend.instructions.md around lines 1-15 ---'
if [ -f .github/instructions/backend.instructions.md ]; then
  cat -n .github/instructions/backend.instructions.md | sed -n '1,15p'
else
  echo '.github/instructions/backend.instructions.md not found'
fi

printf '\n%s\n' '--- lint-related tracked files ---'
git ls-files | rg '(^AGENTS\.md$|(^\.github/instructions/)|(^package\.json$|(^go\.mod$|(^Makefile$|(^Taskfile\.|(^lefthook|(^pre-commit|(^\.golangci\.|(^biome|(^eslint|(^ox|(^oxlint|(^revive|(^staticcheck|(^golangci|(^vitest|(^jest|(^tslint$))' || true

printf '\n%s\n' '--- package.json scripts if present ---'
if [ -f package.json ]; then
  jq '.scripts // {}' package.json
fi

printf '\n%s\n' '--- go.mod module path ---'
if [ -f go.mod ]; then
  sed -n '1,10p' go.mod
fi

printf '\n%s\n' '--- exact command occurrences ---'
rg -n "go build .*/\.\.\.|go test|go test -race|bun run build|npm run build|lint|task|golangci|biome|oxlint|revive|staticcheck" -S --glob '!node_modules' --glob '!dist' --glob '!build' . || true

Repository: hallelx2/llmgate

Length of output: 5352


Make the completion commands enforce the stated quality bar.

AGENTS.md:12 requires lint and the command examples omit any linter. AGENTS.md:24 also requires go test -race, which this command does not run. Add the repository’s actual lint command and use the Go command from the Go conventions. Track this as a Linear issue before merge so work is complete only after build, tests, and lint pass.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@AGENTS.md` at line 12, Update the “Done” guidance in AGENTS.md to include the
repository’s actual lint command and replace the Go test example with the
required go test -race command, while retaining the build and test requirements.
Create and track a Linear issue before merge, and require all build, race-test,
and lint checks to pass before considering the work complete.

Source: Coding guidelines

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants