opencode-froggy 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/command/linear-stale-check.md +199 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ Alternatively, clone or copy the plugin files to one of these directories:
|
|
|
78
78
|
| `/commit-push` | Stage, commit, and push changes with user confirmation | `build` |
|
|
79
79
|
| `/diff-summary [source] [target]` | Show working tree changes or diff between branches | - |
|
|
80
80
|
| `/doc-changes` | Update documentation based on uncommitted changes (new features only) | `doc-writer` |
|
|
81
|
+
| `/linear-stale-check` | Review open Linear issues for the configured team and report whether they are likely active, uncertain, or obsolete | `plan` |
|
|
81
82
|
| `/review-changes` | Review uncommitted changes (staged, unstaged, untracked) | `code-reviewer` |
|
|
82
83
|
| `/review-pr <source> <target>` | Review diff from source branch into target branch | `code-reviewer` |
|
|
83
84
|
| `/send-to [agent] <message>` | Send a message to a child session (subagent) to continue the conversation | - |
|
|
@@ -104,6 +105,24 @@ Shows staged changes, unstaged changes, and untracked file contents.
|
|
|
104
105
|
```
|
|
105
106
|
Shows stats overview, commits, files changed, and full diff between branches.
|
|
106
107
|
|
|
108
|
+
### /linear-stale-check
|
|
109
|
+
|
|
110
|
+
Analyzes open Linear issues for the team configured in `AGENTS.md` with:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
Linear team: <name>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
If no team is configured, the command lists available Linear teams and asks which one to use for the current run.
|
|
117
|
+
|
|
118
|
+
The command is read-only. It fetches open issues, investigates related code, skips code investigation for issues already `In Progress`, and outputs a single report grouped by verdict:
|
|
119
|
+
|
|
120
|
+
- 🔴 Likely obsolete
|
|
121
|
+
- 🟡 Uncertain
|
|
122
|
+
- 🟢 Likely active
|
|
123
|
+
|
|
124
|
+
It does not modify Linear issues, add comments, or update project files.
|
|
125
|
+
|
|
107
126
|
---
|
|
108
127
|
|
|
109
128
|
## Agents
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Review open Linear issues to check if they are still relevant
|
|
3
|
+
agent: plan
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Your task
|
|
7
|
+
|
|
8
|
+
Analyze the team's open Linear issues, diagnose each one by combining Linear
|
|
9
|
+
metadata with codebase investigation, and present a single report.
|
|
10
|
+
|
|
11
|
+
This command is read-only:
|
|
12
|
+
- Do not ask the user questions except when `AGENTS.md` does not define a
|
|
13
|
+
Linear team.
|
|
14
|
+
- Do not modify any Linear issue.
|
|
15
|
+
- Do not add comments to Linear issues.
|
|
16
|
+
- Do not modify `AGENTS.md` or any other project file.
|
|
17
|
+
- Do not start an iterative review loop.
|
|
18
|
+
|
|
19
|
+
The user will read the report and decide what to do next.
|
|
20
|
+
|
|
21
|
+
## 1. Resolve the Linear team
|
|
22
|
+
|
|
23
|
+
Read `AGENTS.md` from the current project and look for a plain-text line:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Linear team: <name>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If the line exists, use `<name>` as the Linear team.
|
|
30
|
+
|
|
31
|
+
If the line does not exist:
|
|
32
|
+
- Use `linear_list_teams` to list available teams.
|
|
33
|
+
- Ask the user to choose one of the available teams with the `question` tool.
|
|
34
|
+
- Use the selected team for this run.
|
|
35
|
+
- Continue the stale-check report normally.
|
|
36
|
+
- Do not write to `AGENTS.md` yourself.
|
|
37
|
+
|
|
38
|
+
## 2. Fetch open issues
|
|
39
|
+
|
|
40
|
+
Use `linear_list_issues` for the resolved team:
|
|
41
|
+
- `team`: resolved Linear team name
|
|
42
|
+
- omit `state` entirely; do not pass `uncompleted`, `backlog`, `unstarted`,
|
|
43
|
+
`started`, an empty string, or any other status-type alias
|
|
44
|
+
- omit `priority` entirely; do not pass `priority: 0` because that filters to
|
|
45
|
+
issues with no priority
|
|
46
|
+
- `orderBy`: `updatedAt`, oldest first
|
|
47
|
+
- fetch all matching issues by paginating until there are no more pages
|
|
48
|
+
|
|
49
|
+
Only pass filters that are intentionally active. For unused filters, omit the
|
|
50
|
+
field entirely instead of passing an empty, zero, or placeholder value. In
|
|
51
|
+
particular, `priority: 0` is an active Linear filter for "No priority" and
|
|
52
|
+
will exclude Medium, High, and Urgent issues.
|
|
53
|
+
|
|
54
|
+
After fetching all team issues, filter locally:
|
|
55
|
+
- keep issues whose `statusType` is not `completed`
|
|
56
|
+
- keep issues whose `statusType` is not `canceled`
|
|
57
|
+
|
|
58
|
+
Do not rely on Linear state-type aliases for this command. They can return
|
|
59
|
+
incomplete results. Fetch broadly for the team, then filter locally by
|
|
60
|
+
`statusType`.
|
|
61
|
+
|
|
62
|
+
For each retained issue, load detailed data with `linear_get_issue` and include relations:
|
|
63
|
+
- title
|
|
64
|
+
- description
|
|
65
|
+
- URL
|
|
66
|
+
- state
|
|
67
|
+
- priority
|
|
68
|
+
- assignee
|
|
69
|
+
- labels
|
|
70
|
+
- project
|
|
71
|
+
- createdAt
|
|
72
|
+
- updatedAt
|
|
73
|
+
- blocking and blocked-by relations
|
|
74
|
+
|
|
75
|
+
## 3. Diagnose each issue
|
|
76
|
+
|
|
77
|
+
Diagnose every fetched issue before producing the final report.
|
|
78
|
+
|
|
79
|
+
### Linear signals
|
|
80
|
+
|
|
81
|
+
Compute these signals for every issue:
|
|
82
|
+
- Days since last update.
|
|
83
|
+
- No assignee.
|
|
84
|
+
- No project.
|
|
85
|
+
- No useful description.
|
|
86
|
+
- `In Progress` but inactive for more than 30 days.
|
|
87
|
+
- Blockers are already closed or canceled.
|
|
88
|
+
|
|
89
|
+
### Code investigation
|
|
90
|
+
|
|
91
|
+
Run code investigation for every issue except issues whose state is exactly
|
|
92
|
+
`In Progress`.
|
|
93
|
+
|
|
94
|
+
For `In Progress` issues, set code signals to:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
skipped (in progress)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
For all other issues, investigate the codebase directly with read-only search
|
|
101
|
+
tools and git history commands. Run searches in parallel batches when possible.
|
|
102
|
+
|
|
103
|
+
For each issue, use:
|
|
104
|
+
- the Linear identifier
|
|
105
|
+
- the title
|
|
106
|
+
- a concise description excerpt
|
|
107
|
+
- candidate keywords from the title and description
|
|
108
|
+
|
|
109
|
+
Candidate keywords should include:
|
|
110
|
+
- mentioned files or modules
|
|
111
|
+
- function, class, type, command, hook, or config names
|
|
112
|
+
- the Linear identifier itself
|
|
113
|
+
- meaningful product or domain terms
|
|
114
|
+
|
|
115
|
+
Search for relevance signals and keep the result to 3-5 concise lines:
|
|
116
|
+
- Does the mentioned code or feature still exist?
|
|
117
|
+
- Is the Linear identifier referenced in code, comments, TODOs, branches, or recent commits?
|
|
118
|
+
- Is there recent git activity on related files or symbols?
|
|
119
|
+
- Are there signs the feature was removed, renamed, or replaced?
|
|
120
|
+
|
|
121
|
+
Summarize the returned investigation as code signals:
|
|
122
|
+
- code or feature found
|
|
123
|
+
- code or feature not found
|
|
124
|
+
- identifier referenced
|
|
125
|
+
- recent git activity found
|
|
126
|
+
- no recent git activity found
|
|
127
|
+
- no code correlation found
|
|
128
|
+
|
|
129
|
+
## 4. Assign a verdict
|
|
130
|
+
|
|
131
|
+
Assign exactly one verdict per issue:
|
|
132
|
+
|
|
133
|
+
- 🔴 Likely obsolete
|
|
134
|
+
- 🟡 Uncertain
|
|
135
|
+
- 🟢 Likely active
|
|
136
|
+
|
|
137
|
+
Use these rules as guidance, but apply judgment based on the full evidence.
|
|
138
|
+
|
|
139
|
+
For `In Progress` issues, base the verdict on update age only:
|
|
140
|
+
- updated less than 30 days ago: 🟢 Likely active
|
|
141
|
+
- updated 30-90 days ago: 🟡 Uncertain
|
|
142
|
+
- updated more than 90 days ago: 🔴 Likely obsolete
|
|
143
|
+
|
|
144
|
+
For other issues:
|
|
145
|
+
- Use 🟢 Likely active when the issue is referenced in code, has recent related git activity, or clearly describes current code.
|
|
146
|
+
- Use 🟡 Uncertain when signals are mixed or weak.
|
|
147
|
+
- Use 🔴 Likely obsolete when mentioned code is missing, the feature appears removed or replaced, or the issue has weak Linear signals and no code correlation.
|
|
148
|
+
|
|
149
|
+
## 5. Output a single report
|
|
150
|
+
|
|
151
|
+
Output one report only. Sort by verdict in this order:
|
|
152
|
+
1. 🔴 Likely obsolete
|
|
153
|
+
2. 🟡 Uncertain
|
|
154
|
+
3. 🟢 Likely active
|
|
155
|
+
|
|
156
|
+
Use this structure:
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
# Linear Stale-Check Report
|
|
160
|
+
|
|
161
|
+
Team: <team>
|
|
162
|
+
Issues analyzed: <count>
|
|
163
|
+
|
|
164
|
+
## 🔴 Likely Obsolete (<count>)
|
|
165
|
+
|
|
166
|
+
### LIN-123 — Issue title
|
|
167
|
+
|
|
168
|
+
URL: <Linear URL>
|
|
169
|
+
State: <state> | Priority: <priority> | Assignee: <assignee or none> | Updated: <N>d ago
|
|
170
|
+
Project: <project or none> | Labels: <labels or none>
|
|
171
|
+
|
|
172
|
+
Summary: <1-2 line summary of the issue>
|
|
173
|
+
|
|
174
|
+
Linear signals:
|
|
175
|
+
- <signal>
|
|
176
|
+
- <signal>
|
|
177
|
+
|
|
178
|
+
Code signals:
|
|
179
|
+
- <signal>
|
|
180
|
+
- <signal>
|
|
181
|
+
|
|
182
|
+
Verdict: 🔴 Likely obsolete — <short reason>
|
|
183
|
+
|
|
184
|
+
## 🟡 Uncertain (<count>)
|
|
185
|
+
|
|
186
|
+
...
|
|
187
|
+
|
|
188
|
+
## 🟢 Likely Active (<count>)
|
|
189
|
+
|
|
190
|
+
...
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Keep each issue concise. Prefer useful evidence over speculation.
|
|
194
|
+
|
|
195
|
+
End the report with:
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
End of report. No issues were modified.
|
|
199
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-froggy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "OpenCode plugin with a hook layer (tool.before.*, session.idle...), agents (code-reviewer, doc-writer), and commands (/review-pr, /commit)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|