summaryrefslogtreecommitdiffhomepage
path: root/.opencode/tool
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-12-15 19:15:40 -0600
committerAiden Cline <[email protected]>2025-12-15 19:15:40 -0600
commitbfb254dac6f8a3ea217f5393a33d87c030b12b6d (patch)
tree4ed598d3015439d5761ab0f6c0ae56092f97823d /.opencode/tool
parent92fe9277859afa2d0bd2c47282bc4c248f017aa2 (diff)
downloadopencode-bfb254dac6f8a3ea217f5393a33d87c030b12b6d.tar.gz
opencode-bfb254dac6f8a3ea217f5393a33d87c030b12b6d.zip
ci: auto triage issues
Diffstat (limited to '.opencode/tool')
-rw-r--r--.opencode/tool/github-triage.ts51
-rw-r--r--.opencode/tool/github-triage.txt79
2 files changed, 130 insertions, 0 deletions
diff --git a/.opencode/tool/github-triage.ts b/.opencode/tool/github-triage.ts
new file mode 100644
index 000000000..f0437e623
--- /dev/null
+++ b/.opencode/tool/github-triage.ts
@@ -0,0 +1,51 @@
+import { Octokit } from "@octokit/rest"
+import { tool } from "@opencode-ai/plugin"
+import DESCRIPTION from "./github-triage.txt"
+
+function getIssueNumber(): number {
+ const issue = parseInt(process.env.ISSUE_NUMBER ?? "", 10)
+ if (!issue) throw new Error("ISSUE_NUMBER env var not set")
+ return issue
+}
+
+export default tool({
+ description: DESCRIPTION,
+ args: {
+ assignee: tool.schema
+ .enum(["thdxr", "adamdotdevin", "rekram1-node", "fwang", "jayair", "kommander"])
+ .describe("The username of the assignee")
+ .default("rekram1-node"),
+ labels: tool.schema
+ .array(tool.schema.enum(["nix", "opentui", "perf", "web", "zen", "docs"]))
+ .describe("The labels(s) to add to the issue")
+ .optional(),
+ },
+ async execute(args) {
+ const issue = getIssueNumber()
+ const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN })
+ const owner = "sst"
+ const repo = "opencode"
+
+ const results: string[] = []
+
+ await octokit.rest.issues.addAssignees({
+ owner,
+ repo,
+ issue_number: issue,
+ assignees: [args.assignee],
+ })
+ results.push(`Assigned @${args.assignee} to issue #${issue}`)
+
+ if (args.labels && args.labels.length > 0) {
+ await octokit.rest.issues.addLabels({
+ owner,
+ repo,
+ issue_number: issue,
+ labels: args.labels,
+ })
+ results.push(`Added labels: ${args.labels.join(", ")}`)
+ }
+
+ return results.join("\n")
+ },
+})
diff --git a/.opencode/tool/github-triage.txt b/.opencode/tool/github-triage.txt
new file mode 100644
index 000000000..78b78a7ce
--- /dev/null
+++ b/.opencode/tool/github-triage.txt
@@ -0,0 +1,79 @@
+Use this tool to assign and/or label a Github issue.
+
+You can assign the following users:
+- thdxr
+- adamdotdevin
+- fwang
+- jayair
+- kommander
+- rekram1-node
+
+
+You can use the following labels:
+- nix
+- opentui
+- perf
+- web
+- zen
+- docs
+
+Always try to assign an issue, if in doubt, assign rekram1-node to it.
+
+## Breakdown of responsibilities:
+
+### thdxr
+
+Dax is responsible for managing core parts of the application, for large feature requests, api changes, or things that require significant changes to the codebase assign him.
+
+This relates to OpenCode server primarily but has overlap with just about anything
+
+### adamdotdevin
+
+Adam is responsible for managing the Desktop/Web app. If there is an issue relating to the desktop app or `opencode web` command. Assign him.
+
+### fwang
+
+Frank is responsible for managing Zen, if you see complaints about OpenCode Zen, maybe it's the dashboard, the model quality, billing issues, etc. Assign him to the issue.
+
+### jayair
+
+Jay is responsible for documentation. If there is an issue relating to documentation assign him.
+
+### kommander
+
+Sebastian is responsible for managing an OpenTUI (a library for building terminal user interfaces). OpenCode's TUI is built with OpenTUI. If there are issues abou:
+- random characters on screen
+- keybinds not working on different terminals
+- general terminal stuff
+Then assign the issue to Him.
+
+### rekram1-node
+
+Assign Aiden to an issue as a catch all, if you can't assign anyone else. Most of the time this will be bugs/polish things.
+If no one else makes sense to assign, assign rekram1-node to it.
+
+## Breakdown of Labels:
+
+### nix
+
+Any issue that mentions nix, or nixos should have a nix label
+
+### opentui
+
+Anything relating to the TUI itself should have an opentui label
+
+### perf
+
+Anything related to slow performance, high ram, high cpu usage, or any other performance related issue should have a perf label
+
+### web
+
+Anything related to `opencode web` or the desktop app should have a web label
+
+### zen
+
+Anything related to OpenCode Zen, billing, or model quality from Zen should have a zen label
+
+### docs
+
+Anything related to the documentation should have a docs label