Skip to content

Commit a2b9d26

Browse files
committed
Update SKILL.md
1 parent 7c248fa commit a2b9d26

1 file changed

Lines changed: 43 additions & 28 deletions

File tree

.claude/skills/release/SKILL.md

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -219,33 +219,49 @@ with the release in Step 3 — no separate commit needed.
219219
### Step 7: Check for Separate Plugin Changes
220220

221221
After the app release is pushed, check if any **separate plugin bundles**
222-
(Oracle, ClickHouse, DuckDB, MSSQL, MongoDB, Redis, XLSX, MQL,
223-
SQLImport) have changes since their last
224-
release. Also check `Plugins/TableProPluginKit/` — changes there affect
225-
all plugins.
222+
have changes since their last release. Also check
223+
`Plugins/TableProPluginKit/` — changes there affect all plugins.
226224

227-
**Detection**: For each separate plugin, find its latest tag and check
228-
for commits:
225+
**Important**: Do NOT use a hardcoded plugin list. Dynamically discover
226+
all separate plugins by scanning the `Plugins/` directory and excluding
227+
built-in plugins and the shared framework.
228+
229+
**Detection**: Dynamically find all separate plugin directories and check
230+
each for changes:
229231

230232
```bash
231-
# Separate plugins and their directory + tag-name mappings:
232-
# Oracle: Plugins/OracleDriverPlugin/ plugin-oracle
233-
# ClickHouse: Plugins/ClickHouseDriverPlugin/ plugin-clickhouse
234-
# DuckDB: Plugins/DuckDBDriverPlugin/ plugin-duckdb
235-
# MSSQL: Plugins/MSSQLDriverPlugin/ plugin-mssql
236-
# MongoDB: Plugins/MongoDBDriverPlugin/ plugin-mongodb
237-
# Redis: Plugins/RedisDriverPlugin/ plugin-redis
238-
# XLSX: Plugins/XLSXExportPlugin/ plugin-xlsx
239-
# MQL: Plugins/MQLExportPlugin/ plugin-mql
240-
# SQLImport: Plugins/SQLImportPlugin/ plugin-sqlimport
241-
242-
# For each plugin, find the latest tag:
243-
LAST_TAG=$(git tag -l "plugin-<name>-v*" --sort=-version:refname | head -1)
244-
245-
# Check for changes since that tag (include PluginKit as shared dependency):
246-
git log --oneline "$LAST_TAG"..HEAD -- Plugins/<PluginDir>/ Plugins/TableProPluginKit/
233+
# Built-in plugins (bundled in app) and shared framework — skip these:
234+
BUILTIN="MySQLDriverPlugin|PostgreSQLDriverPlugin|SQLiteDriverPlugin|CSVExportPlugin|JSONExportPlugin|SQLExportPlugin|TableProPluginKit"
235+
236+
# Discover all separate plugin directories dynamically:
237+
for dir in Plugins/*/; do
238+
dirname=$(basename "$dir")
239+
# Skip built-in plugins and PluginKit
240+
echo "$dirname" | grep -qE "^($BUILTIN)$" && continue
241+
242+
# Derive tag name from directory (e.g., OracleDriverPlugin -> oracle,
243+
# XLSXExportPlugin -> xlsx, SQLImportPlugin -> sqlimport,
244+
# CloudflareD1DriverPlugin -> d1, EtcdDriverPlugin -> etcd)
245+
# Strip "DriverPlugin" or "ExportPlugin" or "ImportPlugin" suffix,
246+
# then lowercase. For "CloudflareD1", use "d1". Apply custom mappings
247+
# as needed based on the CI workflow's tag-name expectations.
248+
tag_name=<derived-lowercase-name>
249+
250+
LAST_TAG=$(git tag -l "plugin-${tag_name}-v*" --sort=-version:refname | head -1)
251+
# Check for changes since that tag (include PluginKit as shared dependency):
252+
if [ -z "$LAST_TAG" ]; then
253+
git log --oneline -- "Plugins/${dirname}/" "Plugins/TableProPluginKit/"
254+
else
255+
git log --oneline "${LAST_TAG}..HEAD" -- "Plugins/${dirname}/" "Plugins/TableProPluginKit/"
256+
fi
257+
done
247258
```
248259

260+
The tag name derivation must match the CI workflow's mapping. Known
261+
mappings: `CloudflareD1DriverPlugin``d1`, `EtcdDriverPlugin`
262+
`etcd`. For standard plugins, strip the suffix and lowercase (e.g.,
263+
`OracleDriverPlugin``oracle`, `XLSXExportPlugin``xlsx`).
264+
249265
If `LAST_TAG` is empty (never released), check for changes since the
250266
beginning of the repo.
251267

@@ -280,9 +296,8 @@ Plugin releases:
280296

281297
## Plugin Releases
282298

283-
Separate plugin bundles (Oracle, ClickHouse, DuckDB, MSSQL, MongoDB,
284-
Redis, XLSX, MQL, SQLImport) are released independently from the main
285-
app via a dedicated workflow
299+
Separate plugin bundles (any plugin not built-in) are released
300+
independently from the main app via a dedicated workflow
286301
(`.github/workflows/build-plugin.yml`). They are also checked
287302
automatically during app releases (Step 7 above).
288303

@@ -302,9 +317,9 @@ plugin-<name>-v<version>
302317

303318
Examples: `plugin-oracle-v1.0.0`, `plugin-clickhouse-v1.2.0`
304319

305-
The `<name>` must match one of the cases in the workflow's mapping:
306-
`oracle`, `clickhouse`, `duckdb`, `cassandra`, `mssql`, `mongodb`,
307-
`redis`, `xlsx`, `mql`, `sqlimport`.
320+
The `<name>` must match one of the cases in the workflow's mapping.
321+
Check `.github/workflows/build-plugin.yml` for the current list of
322+
supported names. New plugins must be added to the workflow mapping.
308323

309324
### Plugin Release Steps
310325

0 commit comments

Comments
 (0)