You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/plugin-review/SKILL.md
+10-1Lines changed: 10 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: cogo-plugin-review
3
-
description: Review a Code on the Go (CoGo or cotg) plugin project for submission readiness — verify the assemblePlugin build, audit actual security risks, and score the code against the submission rubric (compatibility, resource discipline, build reproducibility, native binaries, reflection ban, html documentation, tooltips and in-app help, manifest completeness). Use when the user asks to review, audit, or check a Code On The Go plugin repo.
3
+
description: Review a Code on the Go (CoGo or cotg) plugin project for submission readiness — verify the assemblePlugin build, audit actual security risks, and score the code against the submission rubric (compatibility, resource discipline, build reproducibility, native binaries, reflection ban, html documentation, tooltips and in-app help, manifest completeness, icons and imagery). Use when the user asks to review, audit, or check a Code On The Go plugin repo.
4
4
metadata:
5
5
author: Hal Eisen
6
6
keywords:
@@ -116,6 +116,14 @@ Code On The Go has a three-tier in-IDE help model: Tier 1 (brief) and Tier 2 (mo
116
116
-**IDE version range**: both `plugin.min_ide_version` and `plugin.max_ide_version` present.
117
117
-**minSdk**: either `<uses-sdk>` in the source manifest or `minSdk =` in `build.gradle.kts` (AGP merges the latter into the final manifest, which is conventional and acceptable).
118
118
119
+
#### 6.8 Plugin icons and imagery
120
+
The Plugin Manager shows a day/night icon per plugin; template-installer plugins also show a per-variant thumbnail on the New Project screen. Symbols verifiable in `plugin-api.jar` (`PluginMetadata.iconDayPath`/`iconNightPath`, `templates.CgtTemplateBuilder.thumbnailFromAssets`).
121
+
122
+
-**Icon meta-data present**: `grep -n 'plugin.icon_day\|plugin.icon_night' src/main/AndroidManifest.xml`. Both keys must be `<meta-data>` on `<application>`. Missing either → **Fail** for debug installs (release builds skip the icon check, so a release-only submission with no icon is at most **Partial** — note it either way). A single `plugin.icon` or reliance on `android:icon`/`res/drawable/ic_plugin.xml` does **not** satisfy this — the Plugin Manager reads the zip path from `plugin.icon_day`/`_night`.
123
+
-**Icon path resolves to a real image**: each `android:value` must be an in-`.cgp` path (`assets/<name>.png`). Confirm the file exists at `src/main/assets/<name>.png` (the `assets/` prefix maps to `src/main/assets/`). Run `file src/main/assets/icon_day.png` (and `_night`) — a value pointing at a nonexistent path, or a "PNG" that is actually a Git LFS pointer / non-PNG, → **Fail**. Conventional size ~192×192 (96–256 seen); flag tiny (e.g. 24×24) or clearly-broken images as **Partial**.
124
+
-**Template variant thumbnails** (only for template-installer plugins — those calling `IdeTemplateService`/`CgtTemplateBuilder`): for each variant registered via `thumbnailFromAssets("…/thumb.png", context)`, confirm the referenced `thumb.png` exists under `src/main/assets/templates/<Variant>/…`. A missing `thumb.png` for a registered variant → **Fail**. Then check the thumbnails are **distinct**, not identical placeholders — `md5sum src/main/assets/templates/*/template/thumb.png | sort` (adjust the glob to the real layout); two or more variants sharing one byte-identical `thumb.png` → **Fail** (this is the exact defect fixed in commit `0363237`). Conventional size 512×512 PNG. Non-template plugins: **N/A**, say so.
125
+
- On-device re-verification caveat: the Plugin Manager caches icons via Glide keyed by path without mtime invalidation, so an updated icon under the same plugin id won't visibly refresh until the Glide disk cache is cleared or you install on a clean device (see CLAUDE.md).
126
+
119
127
### Phase 4 — Compose the report
120
128
121
129
One combined report, three sections:
@@ -133,6 +141,7 @@ One combined report, three sections:
133
141
| 6.5 No reflection | … | … |
134
142
| 6.6 Html documentation | … | … |
135
143
| 6.7 Tooltips & in-app help | … | … |
144
+
| 6.8 Icons & imagery | … | … |
136
145
| Manifest declarations | … | … |
137
146
138
147
End with **Overall verdict**: green-light / conditional (list blockers) / block. A Fail on any clause is a blocker; a Partial is conditional.
Copy file name to clipboardExpand all lines: .claude/skills/plugin-review/references/RUBRIC.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,13 @@ Requirements:
46
46
47
47
This is distinct from 6.6: 6.6 is the install-decision page that ships at the plugin's top level; 6.7 is the in-IDE tooltip + Tier 3 help wired through `DocumentationExtension`. A plugin can pass 6.6 and still fail 6.7.
48
48
49
+
## 6.8 Plugin icons and imagery
50
+
51
+
The Plugin Manager renders a day/night icon pair for every plugin, and template-installer plugins additionally render a thumbnail for each template variant on the New Project screen. Both must be present and correct.
52
+
53
+
-**Plugin icon (day/night pair).** The manifest declares `plugin.icon_day` and `plugin.icon_night` as `<meta-data>` on `<application>`, each `android:value` pointing at an in-`.cgp` path (`assets/<name>.png`). Both variants are required — the IDE picks the light or dark icon per theme, and debug installs enforce the icon (release builds skip the check). The images are real PNGs (not res-drawables, not `android:icon`, not Git LFS stubs), conventionally ~192×192.
54
+
-**Template variant thumbnails.** Every template variant a plugin registers via `CgtTemplateBuilder.thumbnailFromAssets(...)` supplies a real, distinct `thumb.png` (512×512 PNG) at the referenced asset path. Identical placeholder thumbnails shared across variants, or a missing `thumb.png` for a registered variant, is a defect — each variant must be visually distinguishable on the New Project screen.
55
+
49
56
## Manifest
50
57
51
58
The manifest must declare every extension, every permission, the supported IDE version range, and the minimum Android SDK level.
0 commit comments