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 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.11.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",