Template for NodeOps Go and Node (TS / Next) projects. Strip what you don't need; everything is wired but each language path is independently toggleable.
| Concern | Tool / file | Go | TS |
|---|---|---|---|
| Dependency updates | .github/dependabot.yml |
gomod |
npm |
| GH Actions updates | .github/dependabot.yml |
yes | yes |
| Lint | .golangci.yml / .oxlintrc.json |
golangci-lint |
oxlint |
| Format | (golangci-lint integrates gofmt) / oxfmt |
yes | yes |
| Vuln scan | govulncheck |
yes | — |
| SAST | gosec |
yes | — |
| Tests | go test / bun test |
yes | yes |
| Build smoke | go build -o /tmp/... / bun build |
yes | yes |
| Tidy | go mod tidy check |
yes | — |
| Pre-commit | .pre-commit-config.yaml |
yes | yes |
| Docker image | Dockerfile + docker-build-go.yml |
yes | — (add later) |
| AI PR review | oc-pr-review.yml (comment /oc) |
yes | yes |
| Dependabot AI triage | oc-dependabot.yml |
yes | yes |
| Path auto-label | auto-label.yml + labeler.yml |
yes | yes |
| Auto-merge | auto-merge.yml (label: automerge) |
yes | yes |
| Code ownership | .github/CODEOWNERS |
yes | yes |
| Least-privilege CI | per-workflow permissions: |
yes | yes |
-
gh repo create <name> --template NodeOps-app/repo-template -
Pick your language path; delete or comment out the other:
Go-only project — remove:
.github/workflows/ci-ts.ymlpackage.json,tsconfig.json,.oxlintrc.json,bun.lock- TS hooks in
.pre-commit-config.yaml npmecosystem block in.github/dependabot.yml*.ts/*.jslines in.github/CODEOWNERS
TS-only project — remove:
.github/workflows/ci-go.yml.github/workflows/docker-build-go.yml(or rewrite for Node)Dockerfile(Go-flavoured),.golangci.yml,go.mod,go.sum- Go hooks in
.pre-commit-config.yaml gomodecosystem block in.github/dependabot.yml*.go/*.modlines in.github/CODEOWNERS
-
Update
.github/CODEOWNERSwith real reviewers for your scope. -
Update
package.jsonname /go.modmodule path. -
Wire repo secrets used by
oc-*workflows:OPENROUTER_API_KEY. -
Optional: turn on branch protection requiring
ci-goorci-tschecks.
asdf install # picks Go / Bun / golangci-lint versions
pre-commit install # enables hook on commit- Least privilege: every workflow declares
permissions:at top withcontents: readand elevates only where needed (e.g.pull-requests: writefor the labeler). - Concurrency: PR workflows cancel in-progress runs on the same ref.
- Runner: defaults to
arc-runner-set(NodeOps self-hosted). Swap toubuntu-latestfor OSS. - Caching: asdf + go build / golangci-lint / bun caches keyed by lockfile hashes.
- Comment
/ocor/opencodeon any PR → AI review run. - Dependabot PRs auto-classified into SAFE (enables
--auto --squash) / NEEDS_REVIEW / UNSAFE buckets. - Backed by
anomalyco/opencode/github.
- Dependabot PRs in
SAFEbucket are auto-merged byoc-dependabot.ymlafter CI passes. - Human PRs: add label
automerge→auto-merge.ymlenables GitHub native auto-merge once required checks + reviews pass.
Default reviewer routing:
| Path | Owners |
|---|---|
ci/dockerfiles/github actions |
@ashwaq06 @pratikbin |
*.go, *.mod |
@bhautikchudasama @vaibhav @mukund |
*.ts, *.js |
@jdchudasasma @starc007 |
*.py |
@rahil |