diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3c86a74cf..37722e604 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,36 +1,27 @@
{
"files.associations": {
- "**/packages/idae-html/src/lib/components/*.html": "svelte"
+ "**/packages/idae-html/src/lib/components/*.html": "html",
},
"emmet.includeLanguages": {
- "svelte": "html"
+ "svelte": "html",
+ "html": "html"
},
+ "cSpell.words": ["CHROMADB", "Idae", "idaenext", "medyll", "sitebase"],
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true,
"[svelte]": {
- "editor.defaultFormatter": "svelte.svelte-vscode"
- }
-
- "cSpell.words": [
- "CHROMADB",
- "Idae",
- "idaenext",
- "medyll",
- "sitebase"
- ],
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[typescript]": {
+ "editor.defaultFormatter": "rvest.vs-code-prettier-eslint",
+ },
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ },
+ "[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true,
- "[svelte]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[typescript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[json]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[css]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- }
-}
\ No newline at end of file
+ },
+ "[css]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ },
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71cd31097..61ea510f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,75 @@
# Changelog
+## [0.0.33-next.0] - 2026-02-23
+**Features:**
+- add CSS files for various components with custom properties for styling
+- add initial CSS files for various components with custom properties for styling
+- update migration documentation and theme variables for improved clarity and structure
+
+
+
+## [0.0.32-next.0] - 2026-02-23
+**Features:**
+- enhance idae-idbql documentation with modular references and examples
+- update migration documentation with tracking table and Tailwind CSS v4 setup instructions
+- add dark mode strategies documentation and setup instructions for Tailwind v4
+
+
+
+## [0.0.31-next.0] - 2026-02-23
+**Features:**
+- add skill to retrieve idae-idbql README documentation via CLI
+
+
+
+## [0.0.30-next.0] - 2026-02-23
+**Chores:**
+- update VSCode settings and improve accordion component styles; add skill creation guide
+
+
+
+## [0.0.29-next.0] - 2026-02-21
+**Bug Fixes:**
+- ensure deterministic ordering of fileInfoList in MakeLibIndex
+
+**Other:**
+- Refactor exports in index.ts for improved organization and clarity
+
+
+
+## [0.0.28-next.0] - 2026-02-21
+**Bug Fixes:**
+- update import statements for prettier configuration across multiple packages
+- update import paths for prettier configuration across multiple packages
+
+**Chores:**
+- publish packages
+
+**Other:**
+- Refactor code structure for improved readability and maintainability
+- Reorder exports in index.ts for consistency and clarity
+
+
+
+## [0.0.27-next.0] - 2026-02-21
+**Bug Fixes:**
+- update import statements for prettier configuration across multiple packages
+- update import paths for prettier configuration across multiple packages
+
+
+
+## [0.0.26-next.0] - 2026-02-21
+**Bug Fixes:**
+- adjust script placement for cssDom component registration
+
+
+
+## [0.0.25-next.0] - 2026-02-21
+**Bug Fixes:**
+- lazy-init idbqlEvent to avoid crash in non-Svelte environments
+
+
+
## [0.0.24-next.0] - 2026-02-21
**Features:**
- implement desktop layout and update test page structure with improved slot handling
diff --git a/package.json b/package.json
index ad19a7b81..b86d772b6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "root",
- "version": "0.0.24-next.0",
+ "version": "0.0.33-next.0",
"type": "module",
"description": "A high-performance monorepo for modern full-stack application development. Focused on data-management, storage, and UI with advanced reactivity. Provides a robust data schema, real-time server sync, and unified support for PostgreSQL, MySQL, SQLite, MongoDB, and PouchDB.",
"keywords": [
diff --git a/packages/idae-api/.prettierrc.js b/packages/idae-api/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-api/.prettierrc.js
+++ b/packages/idae-api/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-api/CHANGELOG.md b/packages/idae-api/CHANGELOG.md
index 828eadef9..4b353d682 100644
--- a/packages/idae-api/CHANGELOG.md
+++ b/packages/idae-api/CHANGELOG.md
@@ -60,7 +60,7 @@
- **2026-01-14** - Refactor code structure for improved readability and maintainability
- **2026-01-14** - chore: update package.json files to use workspace:* for Medyll dependencies
- **2026-01-14** - Merge branches 'dev' and 'dev' of https://github.com/medyll/idae into dev
-- **2026-01-14** - chore: update @medyll/idae-prettier-config to version ^1.2.1 across multiple packages
+- **2026-01-14** - chore: update @medyll/idae-config-prettier to version ^1.2.1 across multiple packages
- **2026-01-14** - Apply changeset versions
- **2026-01-13** - Apply changeset versions
- **2026-01-13** - Apply changeset versions
diff --git a/packages/idae-api/README.md b/packages/idae-api/README.md
index 549252bb3..96cf27cde 100644
--- a/packages/idae-api/README.md
+++ b/packages/idae-api/README.md
@@ -58,6 +58,26 @@ npm install @medyll/idae-api
This section covers how to set up and run the `idae-api` server.
+---
+
+## Default REST API Routes
+
+The following routes are available by default for all collections. All endpoints require the `:collectionName` parameter (the name of your collection/table).
+
+| Method | Path | Validation | Handler Description |
+|--------|------|------------|---------------------|
+| GET | `/:collectionName` | `paramsSchema: { collectionName: string }` `querySchema: Record (optional)` | Returns all documents matching the query. |
+| GET | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }` | Returns a single document by ID. |
+| POST | `/:collectionName` | `paramsSchema: { collectionName: string }` `bodySchema: Record` | Creates a new document. |
+| PUT | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }` `bodySchema: Record` | Updates a document by ID. |
+| DELETE | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }` | Deletes a document by ID. |
+| DELETE | `/:collectionName` | `paramsSchema: { collectionName: string }` | Deletes documents matching the filter. |
+| POST | `/query/:collectionName/:command/:parameters` | `paramsSchema: { collectionName: string, command: string, parameters?: string }` `bodySchema: Record (optional)` | Executes an advanced query command (e.g., find, update, delete). Requires authentication. |
+
+**Note:** All validation uses [zod](https://zod.dev/) schemas. See the source for advanced usage and custom route injection.
+
+---
+
### Initialization & Configuration
Use `idaeApi.setOptions()` to configure the server before starting it.
diff --git a/packages/idae-api/src/lib/index.ts b/packages/idae-api/src/lib/index.ts
index 3d57a9ca5..3103698f8 100644
--- a/packages/idae-api/src/lib/index.ts
+++ b/packages/idae-api/src/lib/index.ts
@@ -1,27 +1,27 @@
// auto exports of entry components
-export * from '$lib/server/IdaeApi.js';
-export * from '$lib/config/routeDefinitions.js';
-export * from '$lib/client/IdaeApiClientRequest.js';
-export * from '$lib/client/IdaeApiClientConfig.js';
-export * from '$lib/client/IdaeApiClientCollection.js';
-export * from '$lib/client/IdaeApiClient.js';
+export * from '$lib/__tests__/fixtures/mockData.js';
+export * from '$lib/__tests__/helpers/testUtils.js';
export * from '$lib/@types/types.js';
-export * from '$lib/server/services/logger.js';
-export * from '$lib/server/services/AuthService.js';
-export * from '$lib/server/middleware/validationMiddleware.js';
-export * from '$lib/server/middleware/validationLayer.js';
-export * from '$lib/server/middleware/tenantContextMiddleware.js';
-export * from '$lib/server/middleware/openApiMiddleware.js';
-export * from '$lib/server/middleware/mcpMiddleware.js';
-export * from '$lib/server/middleware/healthMiddleware.js';
-export * from '$lib/server/middleware/docsMiddleware.js';
-export * from '$lib/server/middleware/databaseMiddleware.js';
-export * from '$lib/server/middleware/authorizationMiddleware.js';
-export * from '$lib/server/middleware/authMiddleware.js';
-export * from '$lib/server/errors/HttpError.js';
-export * from '$lib/server/engine/types.js';
-export * from '$lib/server/engine/routeManager.js';
-export * from '$lib/server/engine/requestDatabaseManager.js';
+export * from '$lib/client/IdaeApiClient.js';
+export * from '$lib/client/IdaeApiClientCollection.js';
+export * from '$lib/client/IdaeApiClientConfig.js';
+export * from '$lib/client/IdaeApiClientRequest.js';
+export * from '$lib/config/routeDefinitions.js';
export * from '$lib/server/engine/mongooseConnectionManager.js';
-export * from '$lib/__tests__/helpers/testUtils.js';
-export * from '$lib/__tests__/fixtures/mockData.js';
+export * from '$lib/server/engine/requestDatabaseManager.js';
+export * from '$lib/server/engine/routeManager.js';
+export * from '$lib/server/engine/types.js';
+export * from '$lib/server/errors/HttpError.js';
+export * from '$lib/server/IdaeApi.js';
+export * from '$lib/server/middleware/authMiddleware.js';
+export * from '$lib/server/middleware/authorizationMiddleware.js';
+export * from '$lib/server/middleware/databaseMiddleware.js';
+export * from '$lib/server/middleware/docsMiddleware.js';
+export * from '$lib/server/middleware/healthMiddleware.js';
+export * from '$lib/server/middleware/mcpMiddleware.js';
+export * from '$lib/server/middleware/openApiMiddleware.js';
+export * from '$lib/server/middleware/tenantContextMiddleware.js';
+export * from '$lib/server/middleware/validationLayer.js';
+export * from '$lib/server/middleware/validationMiddleware.js';
+export * from '$lib/server/services/AuthService.js';
+export * from '$lib/server/services/logger.js';
diff --git a/packages/idae-be/.prettierrc.js b/packages/idae-be/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-be/.prettierrc.js
+++ b/packages/idae-be/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-be/src/lib/index.ts b/packages/idae-be/src/lib/index.ts
index 79e96b2fa..6dcb49fac 100644
--- a/packages/idae-be/src/lib/index.ts
+++ b/packages/idae-be/src/lib/index.ts
@@ -1,17 +1,17 @@
// auto exports of entry components
-export * from '$lib/utils.js';
-export * from '$lib/types.js';
export * from '$lib/be.js';
-export * from '$lib/modules/walk.js';
-export * from '$lib/modules/timers.js';
-export * from '$lib/modules/text.js';
-export * from '$lib/modules/styles.js';
-export * from '$lib/modules/position.js';
-export * from '$lib/modules/http.js';
-export * from '$lib/modules/events.js';
-export * from '$lib/modules/dom.js';
-export * from '$lib/modules/data.js';
-export * from '$lib/modules/classes.js';
-export * from '$lib/modules/attrs.js';
-export * from '$lib/dic/proxyHandler.js';
export * from '$lib/dic/fragment.js';
+export * from '$lib/dic/proxyHandler.js';
+export * from '$lib/modules/attrs.js';
+export * from '$lib/modules/classes.js';
+export * from '$lib/modules/data.js';
+export * from '$lib/modules/dom.js';
+export * from '$lib/modules/events.js';
+export * from '$lib/modules/http.js';
+export * from '$lib/modules/position.js';
+export * from '$lib/modules/styles.js';
+export * from '$lib/modules/text.js';
+export * from '$lib/modules/timers.js';
+export * from '$lib/modules/walk.js';
+export * from '$lib/types.js';
+export * from '$lib/utils.js';
diff --git a/packages/idae-cadenzia/.prettierrc.js b/packages/idae-cadenzia/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-cadenzia/.prettierrc.js
+++ b/packages/idae-cadenzia/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-csss/src/lib/index.ts b/packages/idae-csss/src/lib/index.ts
index e92d0c192..f8a56bb31 100644
--- a/packages/idae-csss/src/lib/index.ts
+++ b/packages/idae-csss/src/lib/index.ts
@@ -1,8 +1,8 @@
// auto exports of entry components
-export * from '$lib/csss/types.js';
-export * from '$lib/csss/runtime.js';
-export * from '$lib/csss/plugin.js';
-export * from '$lib/csss/parser.js';
-export * from '$lib/csss/meta.js';
-export * from '$lib/csss/demo.csss';
export * from '$lib/csss/csss.js';
+export * from '$lib/csss/demo.csss';
+export * from '$lib/csss/meta.js';
+export * from '$lib/csss/parser.js';
+export * from '$lib/csss/plugin.js';
+export * from '$lib/csss/runtime.js';
+export * from '$lib/csss/types.js';
diff --git a/packages/idae-db/.prettierrc.js b/packages/idae-db/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-db/.prettierrc.js
+++ b/packages/idae-db/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-db/src/lib/index.ts b/packages/idae-db/src/lib/index.ts
index 1ddb0743b..f335f4a47 100644
--- a/packages/idae-db/src/lib/index.ts
+++ b/packages/idae-db/src/lib/index.ts
@@ -1,13 +1,13 @@
// auto exports of entry components
+export * from '$lib/@types/types.js';
+export * from '$lib/adapters/ChromaDBAdapter.js';
+export * from '$lib/adapters/MongoDBAdapter.js';
+export * from '$lib/adapters/MySQLAdapter.js';
+export * from '$lib/adapters/PostgreSQLAdapter.js';
+export * from '$lib/adapters/PouchDBAdapter.js';
+export * from '$lib/adapters/SQLiteAdapter.js';
export * from '$lib/idaeDb.js';
-export * from '$lib/IdaeEventEmitter.js';
-export * from '$lib/IdaeDbConnection.js';
export * from '$lib/IdaeDbAdapter.js';
+export * from '$lib/IdaeDbConnection.js';
export * from '$lib/IdaeDBModel.js';
-export * from '$lib/adapters/SQLiteAdapter.js';
-export * from '$lib/adapters/PouchDBAdapter.js';
-export * from '$lib/adapters/PostgreSQLAdapter.js';
-export * from '$lib/adapters/MySQLAdapter.js';
-export * from '$lib/adapters/MongoDBAdapter.js';
-export * from '$lib/adapters/ChromaDBAdapter.js';
-export * from '$lib/@types/types.js';
+export * from '$lib/IdaeEventEmitter.js';
diff --git a/packages/idae-dom-events/.prettierrc.js b/packages/idae-dom-events/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-dom-events/.prettierrc.js
+++ b/packages/idae-dom-events/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-dom-events/src/lib/index.ts b/packages/idae-dom-events/src/lib/index.ts
index ee414bf9c..cf82e75b3 100644
--- a/packages/idae-dom-events/src/lib/index.ts
+++ b/packages/idae-dom-events/src/lib/index.ts
@@ -1,4 +1,4 @@
// auto exports of entry components
-export * from '$lib/htmluModules.js';
-export * from '$lib/htmlDom.js';
export * from '$lib/cssDom.js';
+export * from '$lib/htmlDom.js';
+export * from '$lib/htmluModules.js';
diff --git a/packages/idae-engine/.prettierrc.js b/packages/idae-engine/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-engine/.prettierrc.js
+++ b/packages/idae-engine/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-engine/src/lib/index.ts b/packages/idae-engine/src/lib/index.ts
index 794defdcf..f2f5b1846 100644
--- a/packages/idae-engine/src/lib/index.ts
+++ b/packages/idae-engine/src/lib/index.ts
@@ -1,3 +1,3 @@
// auto exports of entry components
-export * from '$lib/dataOp/types.js';
export * from '$lib/dataOp/dataOp.js';
+export * from '$lib/dataOp/types.js';
diff --git a/packages/idae-html/.prettierrc.js b/packages/idae-html/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-html/.prettierrc.js
+++ b/packages/idae-html/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-html/package.json b/packages/idae-html/package.json
index 1fec6cb0a..bbedb6306 100644
--- a/packages/idae-html/package.json
+++ b/packages/idae-html/package.json
@@ -48,10 +48,10 @@
},
"devDependencies": {
"@medyll/idae-be": "workspace:*",
- "@medyll/idae-config-prettier": "latest",
+ "@medyll/idae-eslint-config": "workspace:*",
+ "@medyll/idae-config-prettier": "workspace:*",
"@medyll/idae-csss": "workspace:*",
"@medyll/idae-dom-events": "workspace:*",
- "@medyll/idae-eslint-config": "workspace:*",
"@medyll/idae-idbql": "workspace:*",
"@medyll/idae-query": "workspace:*",
"@medyll/idae-shared": "workspace:*",
diff --git a/packages/idae-html/src/lib/components/accordion/index.html b/packages/idae-html/src/lib/components/accordion/index.html
index 0221aa92d..94fef70e5 100644
--- a/packages/idae-html/src/lib/components/accordion/index.html
+++ b/packages/idae-html/src/lib/components/accordion/index.html
@@ -1,12 +1,42 @@
+ .accordion-root {
+ padding: var(--gutter-md);
+ font-size: var(--font-md);
+ color: var(--color-foreground)
+ }
+
+ .accordion {
+ width: 100%;
+ max-width: 640px;
+ margin: var(--gutter-sm) 0
+ }
+
+ .accordion-item {
+ border: 1px solid var(--color-border);
+ margin-bottom: 6px;
+ background: var(--color-card);
+ color: var(--color-card-foreground)
+ }
+ .accordion-header {
+ background: var(--color-secondary);
+ padding: var(--gutter-sm);
+ cursor: pointer;
+ border: 0;
+ width: 100%;
+ text-align: left
+ }
+
+ .accordion-content {
+ display: none;
+ padding: var(--gutter-sm);
+ background: var(--color-card)
+ }
+
+ .accordion-content[aria-hidden="false"] {
+ display: block
+ }
+
@@ -42,7 +72,7 @@
const handlers: Function[] = [];
- function makeToggle(header: HTMLElement){
+ function makeToggle(header: HTMLElement) {
return () => {
const content = header.nextElementSibling as HTMLElement | null;
if (!content) return;
@@ -52,7 +82,7 @@
};
}
- headers.forEach((h)=>{
+ headers.forEach((h) => {
const fn = makeToggle(h);
handlers.push(fn);
be(h).on('click', fn);
@@ -60,7 +90,7 @@
// return cleanup per SPECS
return () => {
- headers.forEach((h, i)=>{ try{ be(h).off('click', handlers[i]); }catch(e){} });
+ headers.forEach((h, i) => { try { be(h).off('click', handlers[i]); } catch (e) { } });
};
},
on: {},
diff --git a/packages/idae-html/src/lib/index.ts b/packages/idae-html/src/lib/index.ts
index 1a93e4fcc..37eedef7b 100644
--- a/packages/idae-html/src/lib/index.ts
+++ b/packages/idae-html/src/lib/index.ts
@@ -1,6 +1,6 @@
// auto exports of entry components
-export * from '$lib/main.js';
+export * from '$lib/components/resizePanel/resizePanel.js';
export * from '$lib/core-engine.js';
-export * as themeCss from '$lib/theme/theme.css';
+export * from '$lib/main.js';
export * as resetCss from '$lib/theme/reset.css';
-export * from '$lib/components/resizePanel/resizePanel.js';
+export * as themeCss from '$lib/theme/theme.css';
diff --git a/packages/idae-html/src/lib/theme/reset.css b/packages/idae-html/src/lib/theme/reset.css
index c3fc434a1..83ae83995 100644
--- a/packages/idae-html/src/lib/theme/reset.css
+++ b/packages/idae-html/src/lib/theme/reset.css
@@ -4,6 +4,7 @@
:root { box-sizing: border-box; }
*, *::before, *::after { box-sizing: inherit; }
+html { interpolate-size: allow-keywords; }
html, body, h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd { margin: 0; padding: 0; }
ul, ol { list-style: none; margin: 0; padding: 0; }
diff --git a/packages/idae-html/src/www/index.html b/packages/idae-html/src/www/index.html
index 519714624..86e15f1fe 100644
--- a/packages/idae-html/src/www/index.html
+++ b/packages/idae-html/src/www/index.html
@@ -1,5 +1,8 @@
+
new value
-
\ No newline at end of file
diff --git a/packages/idae-htmlu/src/lib/index.ts b/packages/idae-htmlu/src/lib/index.ts
index eeeab2fc1..fbd377cc0 100644
--- a/packages/idae-htmlu/src/lib/index.ts
+++ b/packages/idae-htmlu/src/lib/index.ts
@@ -1,11 +1,11 @@
// auto exports of entry components
+export * from '$lib/adapters/css-fabric.js';
+export * from '$lib/adapters/tailwind-js.js';
+export * from '$lib/bin/bin.js';
+export * from '$lib/htmlu/htmlu-dom-elements.js';
+export * from '$lib/htmlu/htmlu-types.js';
+export * from '$lib/htmlu/htmlu-utility-first.js';
+export * from '$lib/htmlu/htmlu.js';
+export * from '$lib/htmlu/preprocess.js';
export * from '$lib/index.cjs.js';
export * from '$lib/svelte/htmlu-svelte-preprocess.js';
-export * from '$lib/htmlu/preprocess.js';
-export * from '$lib/htmlu/htmlu.js';
-export * from '$lib/htmlu/htmlu-utility-first.js';
-export * from '$lib/htmlu/htmlu-types.js';
-export * from '$lib/htmlu/htmlu-dom-elements.js';
-export * from '$lib/bin/bin.js';
-export * from '$lib/adapters/tailwind-js.js';
-export * from '$lib/adapters/css-fabric.js';
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md b/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md
index c9d859c9d..16e1e5eb2 100644
--- a/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md
+++ b/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md
@@ -1,63 +1,196 @@
---
-name: idae-idbql-readme
-package: '@medyll/idae-idbql'
-description: Skill to dynamically retrieve the documentation (README.md) of the idae-idbql package via the standardized CLI. idae-idbql is a powerful and flexible IndexedDB query library for TypeScript and JavaScript, offering a MongoDB-like query interface, strong TypeScript support, reactive state management, and easy integration with Svelte. Useful for AI agents, automation scripts, or users needing up-to-date package docs.
+name: idae-idbql-commands
+description: Modular command and API reference for @medyll/idae-idbql. All details are in referenced markdown files.
---
-# Skill: Read idae-idbql README
+# idae-idbql Command Reference Skill
-## Description
-This skill allows you to access the full documentation of the idae-idbql package by using the CLI get-readme command. It is designed for use by AI agents, automation scripts, or any user who wants to quickly fetch the official package documentation.
+This skill is modular. Each section is referenced as a separate markdown file in `skills/idae-idbql/references`.
-## Usage
+---
+
+## Sections
+
+- [Overview](references/overview.md)
+- [Collection Methods](references/collection-methods.md)
+- [Query Syntax & Operators](references/query-syntax.md)
+- [Chainable Methods (ResultSet API)](references/resultset-api.md)
+- [Aggregation & Transformation](references/aggregation.md)
+- [Custom Operators](references/custom-operators.md)
+- [Type Safety & Generics](references/type-safety.md)
+- [Reactivity](references/reactivity.md)
+- [Compatibility](references/compatibility.md)
+- [Usage Examples](references/usage-examples.md)
+- [Advanced Examples](references/advanced-examples.md)
+- [Notes](references/notes.md)
+
+---
+
+For full details, see:
+- [idae-idbql README](README.md)
+- [idae-query README](https://github.com/medyll/idae-query)
+- [AGENTS.md](../../AGENTS.md)
+- [copilot-instructions.md](../../.github/copilot-instructions.md)
+ acc.ages.push(item.age);
+ acc.names.push(item.name);
+ return acc;
+ }, { total: 0, ages: [], names: [] });
+
+// Distinct with filtering
+const uniqueRoles = idbql.users.distinct('role').pluck('role');
+```
-### Locally (in the monorepo):
-```bash
-npx @medyll/idae-idbql get-readme
+---
+
+## Custom Operators
+
+You can add custom operators via `idae-query`:
+```typescript
+import { Operators } from '@medyll/idae-query';
+Operators.addCustomOperator('isEven', (field, value, data) => data[field] % 2 === 0);
+const evenUsers = idbql.users.where({ age: { isEven: true } });
```
-### As an AI skill (VS Code, Claude, Copilot, etc.):
-- Instruct the agent to run the above command to fetch the latest documentation.
-- The output will be the content of the package's README.md.
+---
-## Integration Examples
-- Automatic generation of contextual documentation
-- Answering questions about the idae-idbql API or usage patterns
-- Onboarding or contextual help in the editor
+## Type Safety & Generics
-## Best Practices
-- Always use the get-readme command to ensure the documentation is up to date (avoid static copies)
-- Can be combined with other skills to explore the API, exports, or code examples of the package
+All methods are fully type-safe and support deep generics. Define your model types for maximum safety:
+```typescript
+type User = { id: number; name: string; age: number; metadata: { order: number } };
+const model = { users: { keyPath: '++id', ts: {} as User } };
+const { idbql } = createIdbqDb(model, 1).create('my_db');
+```
-## Limitations
-- This skill only returns the content of README.md (not example files or detailed API docs)
-- Requires the CLI to be properly exposed in package.json (bin field)
+---
-# Skill : Lecture du README de idae-idbql
+## Reactivity
-## Description
-Ce skill permet d'accéder à la documentation complète du package idae-idbql en utilisant la commande CLI get-readme. Il est conçu pour être utilisé par l'IA, des scripts d'automatisation, ou tout utilisateur souhaitant obtenir rapidement la doc officielle du package.
+idae-idbql is state-agnostic. Use Svelte 5 runes (`$derived`, `$state`) or idae-stator for reactive updates. All query chains are compatible with Svelte 5 reactivity.
-## Utilisation
+---
+
+## Compatibility
+
+- Fully compatible with all idae-query methods and syntax
+- IndexedDB persistence with MongoDB-like querying
+- Works in browser environments
+- Supports Svelte 5 and idae-stator for reactivity
+
+---
+
+## See Also
+
+- [idae-query README](https://github.com/medyll/idae-query)
+- [idae-idbql README](README.md)
+
+### Writing Data
+- **put(data)**: Insert or update an item. Returns the inserted/updated item.
+- **add(data)**: Insert a new item. Returns the inserted item.
+- **update(id, changes)**: Update an item by key.
+- **updateWhere(query, changes)**: Bulk update items matching a query.
+
+### Deleting Data
+- **delete(id)**: Delete an item by key.
+- **del(id)**: Alias for `delete` (deprecated).
+- **deleteWhere(query)**: Bulk delete items matching a query.
+
+---
-### En local (dans le monorepo) :
-```bash
-npx @medyll/idae-idbql get-readme
+## Method Signatures
+
+```typescript
+// Reading
+where(query: Where, options?: ResultsetOptions): ResultSet | Promise>
+get(id: any, pathKey?: string): T | undefined
+getBy(value: any, pathKey?: string): ResultSet
+getOne(id: any, pathKey?: string): T | undefined // deprecated
+getAll(): ResultSet | Promise
+count(query?: Where): Promise
+
+// Writing
+put(data: Partial): Promise
+add(data: T): Promise
+update(id: string | number, changes: Partial): Promise
+updateWhere(query: Where, changes: Partial): Promise
+
+// Deleting
+delete(id: string | number): Promise
+del(id: string | number): Promise // deprecated
+deleteWhere(query: Where): Promise
```
-### En tant que skill IA (VS Code, Claude, Copilot, etc.) :
-- Demander à l'agent d'exécuter la commande ci-dessus pour obtenir la documentation la plus à jour.
-- Le résultat affichera le contenu du README.md du package.
+---
+
+## Usage Example
+
+```typescript
+// Insert a user
+await idbql.users.put({ name: 'Alice', age: 30 });
+
+// Query users
+const adults = await idbql.users.where({ age: { $gte: 18 } });
+
+// Update users
+await idbql.users.updateWhere({ active: true }, { lastLogin: Date.now() });
+
+// Delete a user
+await idbql.users.delete(123);
+```
+
+---
+
+## Notes
+- All methods are type-safe and support TypeScript generics.
+- Query operators (`$gt`, `$in`, `$or`, etc.) are supported via `@medyll/idae-query`.
+- For reactivity, use Svelte 5 runes or idae-stator as described in the main documentation.
+- Deprecated methods (`getOne`, `del`) are included for backward compatibility.
+
+---
+
+## Advanced Examples
+
+### Complex Query Example
+
+```typescript
+// Complex filtering with object-style syntax
+const results = await idbql.posts.where({
+ status: 'published',
+ tags: { $in: ['svelte', 'idb'] },
+ views: { $gt: 100 },
+ $or: [
+ { author: 'Mydde' },
+ { featured: true }
+ ]
+}).toArray();
+```
-## Exemples d'intégration
-- Génération automatique de documentation contextuelle
-- Réponse à une question sur l'API ou les patterns d'utilisation de idae-idbql
-- Onboarding ou aide contextuelle dans l'éditeur
+### Svelte 5 Runes Example
-## Bonnes pratiques
-- Toujours utiliser la commande get-readme pour garantir que la documentation est à jour (éviter les copies statiques)
-- Peut être combiné avec d'autres skills pour explorer l'API, les exports, ou les exemples du package
+```svelte
+
+
+{#each adults.value as user}
+
{user.name}
+{/each}
+```
+
+### idae-stator Example
+
+```typescript
+import { createIdbqDb } from '@medyll/idae-idbql';
+
+const { idbql } = createIdbqDb(model, 1, { engine: 'stator' }).create('my_app_db');
+
+const query = idbql.users.where({ role: 'admin' });
+query.onchange((oldValue, newValue) => {
+ console.log('Data updated:', newValue);
+});
+```
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md b/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md
new file mode 100644
index 000000000..decad6568
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md
@@ -0,0 +1,49 @@
+# Advanced Examples
+
+## Complex Filtering
+
+```typescript
+const results = await idbql.posts.where({
+ status: 'published',
+ tags: { $in: ['svelte', 'idb'] },
+ views: { $gt: 100 },
+ $or: [
+ { author: 'Medyl' },
+ { featured: true }
+ ]
+}).toArray();
+```
+
+## Pagination
+
+```typescript
+const page1 = idbql.users.getPage(1, 10);
+const page2 = idbql.users.getPage(2, 10);
+```
+
+## Grouping
+
+```typescript
+const groupedByRole = idbql.users.groupBy('role');
+const groupedByAge = idbql.users.groupBy('age');
+```
+
+## Chaining Example
+
+```typescript
+const admins = idbql.users.where({ role: 'admin' })
+ .sortBy({ lastLogin: 'desc' })
+ .getPage(1, 5)
+ .pluck('name');
+```
+
+## Trivial Examples
+
+```typescript
+const firstUser = idbql.users.first();
+const lastUser = idbql.users.last();
+const totalUsers = idbql.users.count();
+const sumAges = idbql.users.sum('age');
+const minAge = idbql.users.min('age');
+const maxAge = idbql.users.max('age');
+```
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md b/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md
new file mode 100644
index 000000000..6ca490cf1
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md
@@ -0,0 +1,31 @@
+# Aggregation & Transformation
+
+## Statistical Analysis
+
+```typescript
+const stats = {
+ total: idbql.users.count(),
+ adults: idbql.users.count({ age: { $gte: 18 } }),
+ averageAge: idbql.users.avg('age'),
+ minAge: idbql.users.min('age'),
+ maxAge: idbql.users.max('age'),
+};
+```
+
+## Data Transformation Pipeline
+
+```typescript
+const report = idbql.users.where({ age: { $gte: 18 } })
+ .reduce((acc, item) => {
+ acc.total++;
+ acc.ages.push(item.age);
+ acc.names.push(item.name);
+ return acc;
+ }, { total: 0, ages: [], names: [] });
+```
+
+## Distinct with Filtering
+
+```typescript
+const uniqueRoles = idbql.users.distinct('role').pluck('role');
+```
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md b/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md
new file mode 100644
index 000000000..3a3b10e3f
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md
@@ -0,0 +1,20 @@
+# Collection Methods
+
+Each collection (e.g., `idbql.users`, `idbql.tasks`) exposes standard CRUD and query methods.
+
+## Reading Data
+- `where(query, options?)`: Advanced filtering with operator support.
+- `get(id, pathKey?)`: Get a single item by key.
+- `getBy(value, pathKey?)`: Get all items matching a key/value pair.
+- `getAll()`: Get all items in the collection.
+- `count(query?)`: Count documents, optionally filtered.
+
+## Writing Data
+- `put(data)`: Insert or update an item.
+- `add(data)`: Insert a new item.
+- `update(id, changes)`: Update an item by key.
+- `updateWhere(query, changes)`: Bulk update items matching a query.
+
+## Deleting Data
+- `delete(id)`: Delete an item by key.
+- `deleteWhere(query)`: Bulk delete items matching a query.
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md b/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md
new file mode 100644
index 000000000..22ba4a307
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md
@@ -0,0 +1,6 @@
+# Compatibility
+
+- Fully compatible with all idae-query methods and syntax
+- IndexedDB persistence with MongoDB-like querying
+- Works in browser environments
+- Supports Svelte 5 and idae-stator for reactivity
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md b/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md
new file mode 100644
index 000000000..b29237e32
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md
@@ -0,0 +1,13 @@
+# Custom Operators
+
+You can add custom operators via idae-query and use them in idae-idbql queries.
+
+## Example
+
+```typescript
+import { Operators } from '@medyll/idae-query';
+
+Operators.addCustomOperator('isEven', (field, value, data) => data[field] % 2 === 0);
+
+const evenUsers = idbql.users.where({ age: { isEven: true } });
+```
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md b/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md
new file mode 100644
index 000000000..4cdcdd582
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md
@@ -0,0 +1,6 @@
+# Notes
+
+- All methods are type-safe and support TypeScript generics.
+- Query operators ($gt, $in, $or, etc.) are supported via @medyll/idae-query.
+- For reactivity, use Svelte 5 runes or idae-stator as described in the main documentation.
+- Deprecated methods (getOne, del) are included for backward compatibility.
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md b/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md
new file mode 100644
index 000000000..76ff1799b
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md
@@ -0,0 +1,5 @@
+# Overview
+
+The idae-idbql API exposes a MongoDB-like, chainable interface for working with IndexedDB collections. All collection methods are available via the `idbql` object returned from `createIdbqlState` or `createIdbqDb(...).create(...)`.
+
+See AGENTS.md and copilot-instructions.md for usage patterns.
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md b/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md
new file mode 100644
index 000000000..fadbf05b6
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md
@@ -0,0 +1,29 @@
+# Query Syntax & Operators
+
+idae-idbql supports advanced query syntax and operators from idae-query.
+
+## Supported Operators
+
+- `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$in`, `$nin`, `$contains`, `$startsWith`, `$endsWith`, `$btw`, `$or`, `$and`
+
+## Example
+
+```typescript
+idbql.users.where({
+ age: { $gt: 18 },
+ name: { $contains: 'Jo' },
+ $or: [
+ { status: 'active' },
+ { featured: true }
+ ]
+});
+```
+
+## Dot-path Resolution
+
+Query and transformation methods support dot-paths for nested property access:
+
+```typescript
+idbql.orders.where({ 'metadata.order': { $eq: 2 } });
+idbql.orders.sortBy({ 'metadata.order': 'asc' });
+```
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md b/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md
new file mode 100644
index 000000000..6021fcd1b
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md
@@ -0,0 +1,32 @@
+# Reactivity
+
+idae-idbql is state-agnostic. Use Svelte 5 runes (`$derived`, `$state`) or idae-stator for reactive updates.
+
+## Svelte 5 Runes Example
+
+```svelte
+
+
+{#each adults.value as user}
+
+{/each}
+```
+
+## Distinct and Aggregation
+
+```typescript
+const uniqueRoles = idbql.users.distinct('role').pluck('role');
+const stats = {
+ total: idbql.users.count(),
+ averageAge: idbql.users.avg('age'),
+ minAge: idbql.users.min('age'),
+ maxAge: idbql.users.max('age'),
+};
+```
\ No newline at end of file
diff --git a/packages/idae-idbql/.github/skills/skill-creator/SKILL.md b/packages/idae-idbql/.github/skills/skill-creator/SKILL.md
new file mode 100644
index 000000000..06142aec0
--- /dev/null
+++ b/packages/idae-idbql/.github/skills/skill-creator/SKILL.md
@@ -0,0 +1,357 @@
+---
+name: skill-creator
+description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends VSCode capabilities with specialized knowledge, workflows, or tool integrations.
+license: Complete terms in LICENSE.txt
+---
+
+# Skill Creator
+
+This skill provides guidance for creating effective skills.
+
+## About Skills
+
+Skills are modular, self-contained packages that extend VSCode's capabilities by providing
+specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific
+domains or tasks—they transform VSCode from a general-purpose editor into a specialized tool
+equipped with procedural knowledge that no extension can fully possess.
+
+### What Skills Provide
+
+1. Specialized workflows - Multi-step procedures for specific domains
+2. Tool integrations - Instructions for working with specific file formats or APIs
+3. Domain expertise - Company-specific knowledge, schemas, business logic
+4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks
+
+## Core Principles
+
+### Concise is Key
+
+The context window is a public good. Skills share the context window with everything else VSCode needs: system prompt, conversation history, other Skills' metadata, and the actual user request.
+
+**Default assumption: VSCode is already very smart.** Only add context VSCode doesn't already have. Challenge each piece of information: "Does VSCode really need this explanation?" and "Does this paragraph justify its token cost?"
+
+Prefer concise examples over verbose explanations.
+
+### Set Appropriate Degrees of Freedom
+
+Match the level of specificity to the task's fragility and variability:
+
+**High freedom (text-based instructions)**: Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach.
+
+**Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior.
+
+**Low freedom (specific scripts, few parameters)**: Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed.
+
+Think of VSCode as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
+
+### Anatomy of a Skill
+
+Every skill consists of a required SKILL.md file and optional bundled resources:
+
+```
+skill-name/
+├── SKILL.md (required)
+│ ├── YAML frontmatter metadata (required)
+│ │ ├── name: (required)
+│ │ ├── description: (required)
+│ │ └── compatibility: (optional, rarely needed)
+│ └── Markdown instructions (required)
+└── Bundled Resources (optional)
+ ├── scripts/ - Executable code (Python/Bash/etc.)
+ ├── references/ - Documentation intended to be loaded into context as needed
+ └── assets/ - Files used in output (templates, icons, fonts, etc.)
+```
+
+#### SKILL.md (required)
+
+Every SKILL.md consists of:
+
+- **Frontmatter** (YAML): Contains `name` and `description` fields (required), plus optional fields like `license`, `metadata`, and `compatibility`. Only `name` and `description` are read by Claude to determine when the skill triggers, so be clear and comprehensive about what the skill is and when it should be used. The `compatibility` field is for noting environment requirements (target product, system packages, etc.) but most skills don't need it.
+- **Body** (Markdown): Instructions and guidance for using the skill. Only loaded AFTER the skill triggers (if at all).
+
+#### Bundled Resources (optional)
+
+##### Scripts (`scripts/`)
+
+Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
+
+- **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed
+- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks
+- **Benefits**: Token efficient, deterministic, may be executed without loading into context
+- **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments
+
+##### References (`references/`)
+
+Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking.
+
+- **When to include**: For documentation that Claude should reference while working
+- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications
+- **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides
+- **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed
+- **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md
+- **Avoid duplication**: Information should live in either SKILL.md or references files, not both. Prefer references files for detailed information unless it's truly core to the skill—this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files.
+
+##### Assets (`assets/`)
+
+Files not intended to be loaded into context, but rather used within the output Claude produces.
+
+- **When to include**: When the skill needs files that will be used in the final output
+- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography
+- **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified
+- **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context
+
+#### What to Not Include in a Skill
+
+A skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including:
+
+- README.md
+- INSTALLATION_GUIDE.md
+- QUICK_REFERENCE.md
+- CHANGELOG.md
+- etc.
+
+The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion.
+
+### Progressive Disclosure Design Principle
+
+Skills use a three-level loading system to manage context efficiently:
+
+1. **Metadata (name + description)** - Always in context (~100 words)
+2. **SKILL.md body** - When skill triggers (<5k words)
+3. **Bundled resources** - As needed by Claude (Unlimited because scripts can be executed without reading into context window)
+
+#### Progressive Disclosure Patterns
+
+Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them.
+
+**Key principle:** When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files.
+
+**Pattern 1: High-level guide with references**
+
+```markdown
+# PDF Processing
+
+## Quick start
+
+Extract text with pdfplumber:
+[code example]
+
+## Advanced features
+
+- **Form filling**: See [FORMS.md](FORMS.md) for complete guide
+- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods
+- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns
+```
+
+Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed.
+
+**Pattern 2: Domain-specific organization**
+
+For Skills with multiple domains, organize content by domain to avoid loading irrelevant context:
+
+```
+bigquery-skill/
+├── SKILL.md (overview and navigation)
+└── reference/
+ ├── finance.md (revenue, billing metrics)
+ ├── sales.md (opportunities, pipeline)
+ ├── product.md (API usage, features)
+ └── marketing.md (campaigns, attribution)
+```
+
+When a user asks about sales metrics, Claude only reads sales.md.
+
+Similarly, for skills supporting multiple frameworks or variants, organize by variant:
+
+```
+cloud-deploy/
+├── SKILL.md (workflow + provider selection)
+└── references/
+ ├── aws.md (AWS deployment patterns)
+ ├── gcp.md (GCP deployment patterns)
+ └── azure.md (Azure deployment patterns)
+```
+
+When the user chooses AWS, Claude only reads aws.md.
+
+**Pattern 3: Conditional details**
+
+Show basic content, link to advanced content:
+
+```markdown
+# DOCX Processing
+
+## Creating documents
+
+Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md).
+
+## Editing documents
+
+For simple edits, modify the XML directly.
+
+**For tracked changes**: See [REDLINING.md](REDLINING.md)
+**For OOXML details**: See [OOXML.md](OOXML.md)
+```
+
+Claude reads REDLINING.md or OOXML.md only when the user needs those features.
+
+**Important guidelines:**
+
+- **Avoid deeply nested references** - Keep references one level deep from SKILL.md. All reference files should link directly from SKILL.md.
+- **Structure longer reference files** - For files longer than 100 lines, include a table of contents at the top so Claude can see the full scope when previewing.
+
+## Skill Creation Process
+
+Skill creation involves these steps:
+
+1. Understand the skill with concrete examples
+2. Plan reusable skill contents (scripts, references, assets)
+3. Initialize the skill (run init_skill.py)
+4. Edit the skill (implement resources and write SKILL.md)
+5. Package the skill (run package_skill.py)
+6. Iterate based on real usage
+
+Follow these steps in order, skipping only if there is a clear reason why they are not applicable.
+
+### Step 1: Understanding the Skill with Concrete Examples
+
+Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
+
+To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
+
+For example, when building an image-editor skill, relevant questions include:
+
+- "What functionality should the image-editor skill support? Editing, rotating, anything else?"
+- "Can you give some examples of how this skill would be used?"
+- "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?"
+- "What would a user say that should trigger this skill?"
+
+To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness.
+
+Conclude this step when there is a clear sense of the functionality the skill should support.
+
+### Step 2: Planning the Reusable Skill Contents
+
+To turn concrete examples into an effective skill, analyze each example by:
+
+1. Considering how to execute on the example from scratch
+2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly
+
+Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows:
+
+1. Rotating a PDF requires re-writing the same code each time
+2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill
+
+Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows:
+
+1. Writing a frontend webapp requires the same boilerplate HTML/React each time
+2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill
+
+Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows:
+
+1. Querying BigQuery requires re-discovering the table schemas and relationships each time
+2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill
+
+To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.
+
+### Step 3: Initializing the Skill
+
+At this point, it is time to actually create the skill.
+
+Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step.
+
+When creating a new skill from scratch, always run the `init_skill.py` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable.
+
+Usage:
+
+```bash
+scripts/init_skill.py --path
+```
+
+The script:
+
+- Creates the skill directory at the specified path
+- Generates a SKILL.md template with proper frontmatter and TODO placeholders
+- Creates example resource directories: `scripts/`, `references/`, and `assets/`
+- Adds example files in each directory that can be customized or deleted
+
+After initialization, customize or remove the generated SKILL.md and example files as needed.
+
+### Step 4: Edit the Skill
+
+When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Include information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively.
+
+#### Learn Proven Design Patterns
+
+Consult these helpful guides based on your skill's needs:
+
+- **Multi-step processes**: See references/workflows.md for sequential workflows and conditional logic
+- **Specific output formats or quality standards**: See references/output-patterns.md for template and example patterns
+
+These files contain established best practices for effective skill design.
+
+#### Start with Reusable Skill Contents
+
+To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`.
+
+Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
+
+Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them.
+
+#### Update SKILL.md
+
+**Writing Guidelines:** Always use imperative/infinitive form.
+
+##### Frontmatter
+
+Write the YAML frontmatter with `name` and `description`:
+
+- `name`: The skill name
+- `description`: This is the primary triggering mechanism for your skill, and helps Claude understand when to use the skill.
+ - Include both what the Skill does and specific triggers/contexts for when to use it.
+ - Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Claude.
+ - Example description for a `docx` skill: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks"
+
+Do not include any other fields in YAML frontmatter.
+
+##### Body
+
+Write instructions for using the skill and its bundled resources.
+
+### Step 5: Packaging a Skill
+
+Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements:
+
+```bash
+scripts/package_skill.py
+```
+
+Optional output directory specification:
+
+```bash
+scripts/package_skill.py ./dist
+```
+
+The packaging script will:
+
+1. **Validate** the skill automatically, checking:
+
+ - YAML frontmatter format and required fields
+ - Skill naming conventions and directory structure
+ - Description completeness and quality
+ - File organization and resource references
+
+2. **Package** the skill if validation passes, creating a .skill file named after the skill (e.g., `my-skill.skill`) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension.
+
+If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again.
+
+### Step 6: Iterate
+
+After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed.
+
+**Iteration workflow:**
+
+1. Use the skill on real tasks
+2. Notice struggles or inefficiencies
+3. Identify how SKILL.md or bundled resources should be updated
+4. Implement changes and test again
\ No newline at end of file
diff --git a/packages/idae-idbql/.prettierrc.js b/packages/idae-idbql/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-idbql/.prettierrc.js
+++ b/packages/idae-idbql/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-idbql/.vscode/mcp.json b/packages/idae-idbql/.vscode/mcp.json
new file mode 100644
index 000000000..6df9c17c2
--- /dev/null
+++ b/packages/idae-idbql/.vscode/mcp.json
@@ -0,0 +1,3 @@
+{
+ "servers": {}
+}
diff --git a/packages/idae-idbql/SKILL.md b/packages/idae-idbql/SKILL.md
new file mode 100644
index 000000000..c9d859c9d
--- /dev/null
+++ b/packages/idae-idbql/SKILL.md
@@ -0,0 +1,63 @@
+---
+name: idae-idbql-readme
+package: '@medyll/idae-idbql'
+description: Skill to dynamically retrieve the documentation (README.md) of the idae-idbql package via the standardized CLI. idae-idbql is a powerful and flexible IndexedDB query library for TypeScript and JavaScript, offering a MongoDB-like query interface, strong TypeScript support, reactive state management, and easy integration with Svelte. Useful for AI agents, automation scripts, or users needing up-to-date package docs.
+---
+
+# Skill: Read idae-idbql README
+
+## Description
+This skill allows you to access the full documentation of the idae-idbql package by using the CLI get-readme command. It is designed for use by AI agents, automation scripts, or any user who wants to quickly fetch the official package documentation.
+
+## Usage
+
+### Locally (in the monorepo):
+```bash
+npx @medyll/idae-idbql get-readme
+```
+
+### As an AI skill (VS Code, Claude, Copilot, etc.):
+- Instruct the agent to run the above command to fetch the latest documentation.
+- The output will be the content of the package's README.md.
+
+## Integration Examples
+- Automatic generation of contextual documentation
+- Answering questions about the idae-idbql API or usage patterns
+- Onboarding or contextual help in the editor
+
+## Best Practices
+- Always use the get-readme command to ensure the documentation is up to date (avoid static copies)
+- Can be combined with other skills to explore the API, exports, or code examples of the package
+
+## Limitations
+- This skill only returns the content of README.md (not example files or detailed API docs)
+- Requires the CLI to be properly exposed in package.json (bin field)
+
+# Skill : Lecture du README de idae-idbql
+
+## Description
+Ce skill permet d'accéder à la documentation complète du package idae-idbql en utilisant la commande CLI get-readme. Il est conçu pour être utilisé par l'IA, des scripts d'automatisation, ou tout utilisateur souhaitant obtenir rapidement la doc officielle du package.
+
+## Utilisation
+
+### En local (dans le monorepo) :
+```bash
+npx @medyll/idae-idbql get-readme
+```
+
+### En tant que skill IA (VS Code, Claude, Copilot, etc.) :
+- Demander à l'agent d'exécuter la commande ci-dessus pour obtenir la documentation la plus à jour.
+- Le résultat affichera le contenu du README.md du package.
+
+## Exemples d'intégration
+- Génération automatique de documentation contextuelle
+- Réponse à une question sur l'API ou les patterns d'utilisation de idae-idbql
+- Onboarding ou aide contextuelle dans l'éditeur
+
+## Bonnes pratiques
+- Toujours utiliser la commande get-readme pour garantir que la documentation est à jour (éviter les copies statiques)
+- Peut être combiné avec d'autres skills pour explorer l'API, les exports, ou les exemples du package
+
+## Limites
+- Le skill retourne uniquement le contenu du README.md (pas les fichiers d'exemples ou la doc API détaillée)
+- Nécessite que la CLI soit bien exposée dans le package.json (champ bin)
diff --git a/packages/idae-idbql/src/lib/index.ts b/packages/idae-idbql/src/lib/index.ts
index b577e4f76..217d1b332 100644
--- a/packages/idae-idbql/src/lib/index.ts
+++ b/packages/idae-idbql/src/lib/index.ts
@@ -1,10 +1,10 @@
// auto exports of entry components
-export * from '$lib/state/statorAdapter.js';
-export * from '$lib/state/idbstate.svelte.js';
-export * from '$lib/state/idbqlEvent.svelte.js';
-export * from '$lib/scripts/types.js';
-export * from '$lib/path/pathResolver.js';
-export * from '$lib/idbqlCore/types.js';
-export * from '$lib/idbqlCore/idbqlSchema.js';
-export * from '$lib/idbqlCore/idbqlCore.js';
export * from '$lib/collection/collection.svelte.js';
+export * from '$lib/idbqlCore/idbqlCore.js';
+export * from '$lib/idbqlCore/idbqlSchema.js';
+export * from '$lib/idbqlCore/types.js';
+export * from '$lib/path/pathResolver.js';
+export * from '$lib/scripts/types.js';
+export * from '$lib/state/idbqlEvent.svelte.js';
+export * from '$lib/state/idbstate.svelte.js';
+export * from '$lib/state/statorAdapter.js';
diff --git a/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts b/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts
index d6482bc44..3d0e89acf 100644
--- a/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts
+++ b/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts
@@ -12,26 +12,15 @@ interface EventData {
data: T;
keyPath: string;
}
-class IdbqlStateEvent {
- // main application shared state
+class IdbqlStateEventBase {
+ // main application shared state (fallback non-Svelte)
dataState: Record;
private _adapter: {
applyEvent?: (event: IdbqlEventPayload) => void;
} | null = null;
constructor() {
- // Initialize dataState with Svelte runes when available, otherwise use plain object
- // `typeof $state` is safe even if `$state` is not defined in this environment.
- // In Svelte compile context `$state` exists and returns a reactive store proxy.
- if (typeof $state !== "undefined") {
- // use the Svelte rune to create reactive state
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- this.dataState = $state>({});
- } else {
- // fallback for non-Svelte environments: plain object
- this.dataState = {} as Record;
- }
+ this.dataState = {} as Record;
}
registerAdapter(adapter: { applyEvent?: (event: IdbqlEventPayload) => void } | null) {
@@ -186,11 +175,28 @@ class IdbqlStateEvent {
}
}
+// Svelte-specific subclass uses the `$state` rune as a class field initializer.
+// Instantiating this subclass in a non-Svelte environment will throw; callers
+// should use `createIdbqlEvent()` which falls back to the base implementation.
+class IdbqlStateEvent extends IdbqlStateEventBase {
+ // main application shared state - Svelte rune (only valid in Svelte contexts)
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ dataState = $state>({});
+}
+
export function createIdbqlEvent() {
- return new IdbqlStateEvent();
+ try {
+ // Try to instantiate the Svelte-aware subclass. In non-Svelte
+ // environments this will throw (because `$state` is not defined),
+ // so we fallback to the base implementation.
+ return new IdbqlStateEvent();
+ } catch (e) {
+ return new IdbqlStateEventBase();
+ }
}
-let _idbqlEventSingleton: IdbqlStateEvent | null = null;
+let _idbqlEventSingleton: IdbqlStateEventBase | IdbqlStateEvent | null = null;
export function getIdbqlEvent() {
if (!_idbqlEventSingleton) {
diff --git a/packages/idae-machine/.prettierrc.js b/packages/idae-machine/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-machine/.prettierrc.js
+++ b/packages/idae-machine/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-machine/CHANGELOG.md b/packages/idae-machine/CHANGELOG.md
index 7c359283c..6965eb75d 100644
--- a/packages/idae-machine/CHANGELOG.md
+++ b/packages/idae-machine/CHANGELOG.md
@@ -60,7 +60,7 @@
- **2026-01-14** - Refactor code structure for improved readability and maintainability
- **2026-01-14** - fix: add console log for changeset file creation in generate-changeset script
- **2026-01-14** - fix: add comment to clarify context retrieval in FieldValue component
-- **2026-01-14** - chore: update @medyll/idae-prettier-config to version ^1.2.1 across multiple packages
+- **2026-01-14** - chore: update @medyll/idae-config-prettier to version ^1.2.1 across multiple packages
- **2026-01-14** - feat: enhance IDbCollections with new methods and improve collection handling; update dependencies and tests
- **2026-01-14** - feat: refactor machine initialization and enhance IDbCollections with shared instances; update README and tests
- **2026-01-13** - feat: remove obsolete components and services; clean up unused code
diff --git a/packages/idae-mongo/.prettierrc.js b/packages/idae-mongo/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-mongo/.prettierrc.js
+++ b/packages/idae-mongo/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-mongo/src/lib/index.ts b/packages/idae-mongo/src/lib/index.ts
index bda23e30b..d4d87f2be 100644
--- a/packages/idae-mongo/src/lib/index.ts
+++ b/packages/idae-mongo/src/lib/index.ts
@@ -1,6 +1,6 @@
// auto exports of entry components
-export * from '$lib/data/types.js';
-export * from '$lib/data/schemeModelClass.js';
-export * from '$lib/data/SchemeModel.js';
-export * from '$lib/data/SchemeFieldClass.js';
export * from '$lib/data/Entity.js';
+export * from '$lib/data/SchemeFieldClass.js';
+export * from '$lib/data/SchemeModel.js';
+export * from '$lib/data/schemeModelClass.js';
+export * from '$lib/data/types.js';
diff --git a/packages/idae-query/.prettierrc.js b/packages/idae-query/.prettierrc.js
index e28dd089d..ead81f37b 100644
--- a/packages/idae-query/.prettierrc.js
+++ b/packages/idae-query/.prettierrc.js
@@ -1,5 +1,5 @@
-import idaePrettierConfig from "@medyll/idae-prettier-config";
+import idaeConfigPrettier from "@medyll/idae-config-prettier";
export default {
- ...idaePrettierConfig,
+ ...idaeConfigPrettier,
};
\ No newline at end of file
diff --git a/packages/idae-query/src/lib/index.ts b/packages/idae-query/src/lib/index.ts
index 13bbe2b8a..9b2459b25 100644
--- a/packages/idae-query/src/lib/index.ts
+++ b/packages/idae-query/src/lib/index.ts
@@ -1,6 +1,6 @@
// auto exports of entry components
-export * from '$lib/types.js';
-export * from '$lib/resultSet/resultset.js';
-export * from '$lib/query/query.js';
-export * from '$lib/path/pathResolver.js';
export * from '$lib/operators/operators.js';
+export * from '$lib/path/pathResolver.js';
+export * from '$lib/query/query.js';
+export * from '$lib/resultSet/resultset.js';
+export * from '$lib/types.js';
diff --git a/packages/idae-slotui/.github/agents/idae-agent-full.md b/packages/idae-slotui/.github/agents/idae-agent-full.md
deleted file mode 100644
index 0f8e9be5c..000000000
--- a/packages/idae-slotui/.github/agents/idae-agent-full.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-description: 'Expert Multi-role Agent (PM, Architect, Brainstorm, Dev, Tester, DOC) with GitHub & Kanban integration.'
-tools: ['vscode', 'execute', 'read', 'edit', 'search', 'web', 'agent', 'todo', 'daniyalfaraz.copilot-kanban/kanban_create', 'daniyalfaraz.copilot-kanban/kanban_update', 'daniyalfaraz.copilot-kanban/kanban_get', 'daniyalfaraz.copilot-kanban/kanban_reset']
----
-
-# SYSTEM INSTRUCTIONS
-
-You are a versatile AI Agent for Mydde. You dynamically switch between six roles.
-Every response MUST start with: [[ROLE_NAME]].
-
-## 1. DYNAMIC ROLES
-- **[[PM]]**: Project management. Synchronizes GitHub Issues and the Kanban board. Tasks: Sprint planning, `backlog.md`.
-- **[[BRAINSTORM]]**: Ideation and exploration. Proposes alternatives and challenges concepts before technical design.
-- **[[ARCHITECT]]**: Design focus. Tasks: Technical specifications, file structure, and system design.
-- **[[DEV]]**: Implementation. Tasks: SOLID code. Triggers [[DOC]] if changes impact documentation.
-- **[[TESTER]]**: Quality. **MANDATORY**: No implementation without a test plan.
-- **[[DOC]]**: Documentation. Tasks: Manages `README.md` and project docs.
-
-## 2. KANBAN WORKFLOW (Copilot Kanban)
-You must keep the visual board in sync with your actions:
-- **Initialization**: Use `kanban_get` to see existing tasks. Use `kanban_reset` only if Mydde requests a fresh start.
-- **Task Creation**: When a plan is agreed upon, [[PM]] must use `kanban_create` to populate the "Ready" column.
-- **Progress Tracking**:
- - When starting a task, use `kanban_update` to move it to `in_progress`.
- - When finished/testing, move to `in_review`.
- - Only move to `done` after Mydde's validation or [[TESTER]] approval.
-- **Constraint**: Only one task in `in_progress` at a time.
-
-## 3. SELF-DIAGNOSTIC & INITIALIZATION
-- **Startup Check**: On first interaction, verify existence of `.github/copilot-instructions.md`, `backlog.md`, and `/idae-docs/sprints/`.
-- **Auto-Initialization**: If missing, ask Mydde: "I detect a missing project structure. Should I initialize the backlog and sprint folders for you?"
-
-## 4. WORKFLOW & ISSUE DETECTION
-- **Context Search**: Check if a task relates to a GitHub Issue, Sprint item, or existing Kanban card.
-- **Missing Context**: If orphan, ask: "No context found. Create GitHub Issue, add to Sprint, or add to Kanban?"
-- **Ambiguous**: Ask Mydde: "Direct, Sprint, or Long-term?"
-
-## 5. OPERATIONAL RULES
-- Address the user as Mydde. Use "tu".
-- Be concise. No unnecessary emphasis.
-- Use `web` for documentation and `searchSyntax` for deep code analysis.
-- Every major action must be documented in a dedicated `.md` file.
-
-## 6. GITHUB & TOOLS INTEGRATION
-- Use `activePullRequest` and `openPullRequest` for task lifecycles.
-- Use `edit` and `read` for documentation management.
\ No newline at end of file
diff --git a/packages/idae-slotui/.github/copilot-instructions.md b/packages/idae-slotui/.github/copilot-instructions.md
index c5b064933..b4651ad04 100644
--- a/packages/idae-slotui/.github/copilot-instructions.md
+++ b/packages/idae-slotui/.github/copilot-instructions.md
@@ -1,50 +1,75 @@
+# Copilot / AI agent instructions — @medyll/idae-slotui-svelte
-# Copilot/AI Agent Instructions for @medyll/idae-slotui-svelte
-
-This repo is a Svelte 5 component library (`src/lib/`) and a SvelteKit demo/docs site (`src/routes/`). It is part of a monorepo and shares tooling with other `idae` packages.
-
-## Architecture & Structure
-- **Component Library:** All UI components are in `src/lib/base/` (atomic) and `src/lib/controls/` (form/interactive). Utilities are in `src/lib/utils/`.
-- **Docs/Demos:** SvelteKit app in `src/routes/` showcases and documents all components.
-- **Styling:** Each component has a `.scss` file, imported via ``. SCSS is canonical; compiled CSS is output to `src/lib/slotui-css/` (never edit generated CSS directly).
-- **Exports:** All public components and CSS are re-exported from `src/lib/index.ts`.
-- **Build:** Uses Vite, SvelteKit, UnoCSS, and `@medyll/cssfabric` for styling.
-
-## Key Patterns & Conventions
-- **Svelte 5 runes only:** Use `$props`, `$state`, `$derived`, `$bindable`, `$effect` for all reactivity and props. *Legacy Svelte syntax is forbidden.*
- - Example: `const { label, disabled } = $props()`
-- **Slot/fallback logic:** Always use the `Slotted` component (`$lib/utils/slotted/Slotted.svelte`) for slot rendering and fallback content.
- - Example: `{value ?? ''}`
-- **Props typing:** Use TypeScript `type` or `interface` for all props, inline or in a `types.ts` file per component.
-- **Icons:** Use the `Icon` component (`$lib/base/icon/Icon.svelte`, wraps Iconify).
-- **SCSS mixins/presets:** Use mixins from `src/lib/styles/slotui-mixins.scss` and variables from `slotui-presets.scss` for consistent sizing, spacing, and variants.
-- **Aliases:** Use `$lib`, `$components`, `$utils`, `$styles` as defined in `tsconfig.json`.
-
-## Developer Workflows
-- **Dev server:** `npm run dev`
-- **Build/package:** `npm run build` (Vite + svelte-package), `npm run package`
-- **Test:** `npm run test` (Vitest + Playwright)
- - Unit: `npm run test:unit`
- - Integration: `npm run test:integration`
-- **CSS build:** `npm run release-css` (compiles all SCSS to distributable CSS)
-- **Lint/format:** `npm run lint`, `npm run format`
-
-## Project-Specific Notes
-- **Never edit files in `src/lib/slotui-css/` directly**; always update SCSS and re-run the CSS build.
-- **Tests:** Place in `src/tests/` or alongside components.
-- **Component creation:** Add new folders/files in `src/lib/base` or `src/lib/controls`, import SCSS, and export from `src/lib/index.ts`.
-- **Docs generation:** See `src/tests/docs.test.js` and `src/lib/docs/docs.js` for automated docs extraction from Svelte components.
-- **Monorepo:** Shares scripts/config with other `idae` packages; see root for shared scripts.
-
-## Integration & Dependencies
-- **Depends on:** `@medyll/idae-engine`, `@medyll/cssfabric`, UnoCSS, Iconify
-- **Build tools:** Vite, SvelteKit, custom scripts in `scripts/`
-
-## References
-- [README.md](../../README.md): Usage, examples, and more details
-- [src/lib/index.ts](../../src/lib/index.ts): Export surface
-- [scripts/release-css.js](../../scripts/release-css.js): SCSS build logic
-- [tsconfig.json](../../tsconfig.json): Aliases and strictness
-
----
-**Last updated:** January 2026
+Always read the repository root `MIGRATION.md` before making changes that touch component runtime, public APIs, or styling conventions.
+
+Purpose: give an AI agent the minimal, project-specific knowledge to be productive quickly — architecture, key files, conventions, commands and examples.
+
+1) Big picture
+- Library + demo app: component library in `src/lib/` (atomic controls in `src/lib/base/` and interactive controls in `src/lib/controls/`) and a SvelteKit demo/docs site under `src/routes/`.
+- Styling: SCSS is source of truth; compiled CSS lives in `src/lib/slotui-css/` (do not edit generated files).
+
+When a maintainer asks "what should I work on next?", check the migration guidance and the central component status map:
+
+- Primary source: [MIGRATION.md](MIGRATION.md) (root). See the section that points to `COMPONENT_MAP` for per-component next-steps.
+- Component status: [COMPONENT_MAP.md](COMPONENT_MAP.md) — contains the current migration/issue notes and the "error report" section describing recommended actions.
+
+To regenerate `COMPONENT_MAP.md` from project heuristics and type checks run:
+
+```bash
+node scripts/make-component-maps.js
+```
+
+
+2) Key files & scripts to know
+- `src/lib/index.ts` — public export surface (used by packaging). Update when adding public components.
+- `scripts/make-export.js` — regenerates `index.ts` files per component folder.
+- `src/tests/docs.test.js` + `src/lib/docs/docs.js` — automated docs extraction used in CI/docs.
+- `scripts/make-component-maps.js` — get component map from project heuristics.
+
+3) Developer workflows & commands (exact)
+- Package: `npm run package`
+- Dev server: `npm run dev`
+- Build library/site: `npm run build`
+- Lint/format: `npm run lint`, `npm run format`
+- Tests: `npm run test` (uses Vitest + Playwright)
+
+4) Project-specific patterns and constraints
+- Svelte 5 'runes' only: use `$props()`, `$state()`, `$derived()`, `$bindable()`, `$effect()` for reactivity and props. Legacy `export let` or `$:` reactive labels are forbidden. Example:
+
+ const { label, disabled } = $props()
+
+- Slot rendering: always use the `Slotted` helper located at `src/lib/utils/slotted/Slotted.svelte` for fallback content. Example:
+
+ {value ?? ''}
+
+- SCSS pattern: each component imports its SCSS via a global style tag:
+
+
+
+- Icons: use `src/lib/base/icon/Icon.svelte` (Iconify wrapper) rather than inlining SVGs.
+
+5) Packaging & exports
+- New public components must be exported from `src/lib/index.ts`. Use `scripts/make-export.js` to regenerate export indexes after adding files.
+- Do not hand-edit `src/lib/slotui-css/`.
+
+6) Tests & docs
+- Place tests in `src/tests/` or next to the component. The docs extractor (`src/lib/docs/docs.js`) is exercised by `src/tests/docs.test.js` — keep component JSDoc and props typing up-to-date.
+
+7) Monorepo & aliases
+- This package is part of a monorepo; imports use tsconfig path aliases: `$lib`, `$components`, `$utils`, `$styles`. Check `tsconfig.json` when resolving paths.
+
+8) What agents MUST do before changing API/behavior
+- Run `npm run test` locally.
+- Verify `src/tests/docs.test.js` still passes (docs extraction) when editing public components.
+- Update `MIGRATION.md` if changing surface-breaking behavior and reference it in your PR.
+
+9) Quick troubleshooting pointers
+- If exports are missing after adding files, run `node scripts/make-export.js`.
+
+References
+- Export surface: [src/lib/index.ts](src/lib/index.ts)
+- Slotted helper: [src/lib/utils/slotted/Slotted.svelte](src/lib/utils/slotted/Slotted.svelte)
+- Export generator: [scripts/make-export.js](scripts/make-export.js)
+- Migration rules: [MIGRATION.md](MIGRATION.md)
+
+Last updated: February 2026
diff --git a/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json b/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json
deleted file mode 100644
index 5b6386086..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "agents",
- "version": "2.5.0",
- "description": "Generate and maintain AGENTS.md files following public convention",
- "repository": "https://github.com/netresearch/agents-skill",
- "license": "MIT",
- "author": {
- "name": "Netresearch DTT GmbH",
- "email": "info@netresearch.de"
- },
- "skills": [
- "./skills/agents"
- ]
-}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/LICENSE b/packages/idae-slotui/.github/skills/agents-skill/LICENSE
deleted file mode 100644
index 9f322a4d8..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-Version 2, June 1991
-
-Copyright (C) 2025 Netresearch DTT GmbH
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
diff --git a/packages/idae-slotui/.github/skills/agents-skill/SKILL.md b/packages/idae-slotui/.github/skills/agents-skill/SKILL.md
deleted file mode 100644
index dc9438495..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/SKILL.md
+++ /dev/null
@@ -1,505 +0,0 @@
----
-name: agents
-description: "Agent Skill: Generate and maintain AGENTS.md files following the public agents.md convention. Use when creating AI agent documentation, onboarding guides, or standardizing agent patterns. By Netresearch."
----
-
-# AGENTS.md Generator Skill
-
-Generate and maintain AGENTS.md files following the [public agents.md convention](https://agents.md/).
-
-> **AGENTS.md is FOR AGENTS, not humans.** Human readability is a convenient side effect, not a design goal. Every section, format choice, and word exists to maximize AI coding agent efficiency. If something helps humans but wastes agent tokens, remove it.
-
-> **Spec Compliance:** This skill follows the official agents.md specification which has **no required fields** - all sections are recommendations based on [best practices from 2,500+ repositories](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/).
-
-## Language Choice
-
-**Default to English** - AI coding agents perform best with English instructions because:
-- Programming keywords, libraries, and error messages are English
-- Zero "semantic friction" between instruction and code (`Create user` → `createUser`)
-- Most token-efficient encoding for technical instructions
-
-**Exception: Match your code's naming language.** If your codebase uses non-English naming conventions (e.g., German class names like `Rechnungssteller`, French variables like `id_client`), write AGENTS.md in that language to prevent "naming hallucinations" where agents mix languages.
-
-> **Rule:** The language of AGENTS.md must match the language used for domain naming in the code.
-
-## When to Use This Skill
-
-When creating new projects, use this skill to establish baseline AGENTS.md structure.
-
-When standardizing existing projects, use this skill to generate consistent agent documentation.
-
-When ensuring multi-repo consistency, use this skill to apply the same standards across repositories.
-
-When checking if AGENTS.md files are up to date, use the freshness checking scripts to compare file timestamps with git commits.
-
-## Prerequisites
-
-The generator scripts require:
-
-| Requirement | Version | Notes |
-|-------------|---------|-------|
-| **Bash** | 4.3+ | Required for nameref variables (`local -n`) |
-| **jq** | 1.5+ | JSON processing |
-| **git** | 2.0+ | For git history analysis |
-
-### macOS Users
-
-macOS ships with Bash 3.2 (GPLv2 licensed). Install a newer version:
-
-```bash
-# Install Bash 4.4+ via Homebrew
-brew install bash
-
-# Run scripts with newer bash
-/opt/homebrew/bin/bash scripts/generate-agents.sh /path/to/project
-
-# Or add to PATH (optional)
-export PATH="/opt/homebrew/bin:$PATH"
-```
-
-The scripts will detect incompatible Bash versions and exit with a helpful error message.
-
-## CRITICAL: Full Verification Required
-
-**NEVER trust existing AGENTS.md content as accurate.** Always verify documented information against the actual codebase:
-
-### Mandatory Verification Steps
-
-1. **Extract actual state from source files:**
- - List all modules/files with their actual docstrings
- - List all scripts and their actual purposes
- - Extract actual Makefile/package.json commands
- - List actual test files and structure
-
-2. **Compare extracted state against documented state:**
- - Check if documented files actually exist
- - Check if documented commands actually work
- - Check if module descriptions match actual docstrings
- - Check if counts (modules, scripts, tests) are accurate
-
-3. **Identify and fix discrepancies:**
- - Remove documentation for non-existent files
- - Add documentation for undocumented files
- - Correct inaccurate descriptions
- - Update outdated counts and references
-
-4. **Preserve unverifiable content:**
- - Keep manually-written context that can't be extracted
- - Keep subjective guidance and best practices
- - Mark preserved content appropriately
-
-### What to Verify
-
-| Category | Verification Method |
-|----------|---------------------|
-| Module list | `ls /*.py` + read docstrings |
-| Script list | `ls scripts/*.sh` + read headers |
-| Commands | `grep` Makefile targets **AND run them** |
-| Test files | `ls tests/*.py` |
-| Data files | `ls *.json` in project root |
-| Config files | Check actual existence |
-| **File names** | **EXACT match required** (not just existence) |
-| **Numeric values** | PHPStan level, coverage %, etc. from actual configs |
-
-### Critical: Exact Name Matching
-
-File names in AGENTS.md must match actual filenames **exactly**:
-
-| Documented | Actual | Status |
-|------------|--------|--------|
-| `CowriterAjaxController.php` | `AjaxController.php` | **WRONG** - name mismatch |
-| `AjaxController.php` | `AjaxController.php` | Correct |
-
-**Real-world example from t3x-cowriter review:**
-- AGENTS.md documented `Controller/CowriterAjaxController.php`
-- Actual file was `Controller/AjaxController.php`
-- This mismatch confused agents trying to find the file
-
-### Critical: Command Verification
-
-Commands documented in AGENTS.md must actually work when run:
-
-```bash
-# BAD: Document without testing
-make test-mutation # May not exist!
-
-# GOOD: Verify before documenting
-make -n test-mutation 2>/dev/null && echo "EXISTS" || echo "MISSING"
-```
-
-**Real-world example from t3x-cowriter review:**
-- AGENTS.md documented `make test-mutation` and `make phpstan`
-- Neither target existed (actual was `make typecheck`)
-- Agents failed when trying to run documented commands
-
-### Example Verification Commands
-
-```bash
-# Extract actual module docstrings
-for f in cli_audit/*.py; do head -20 "$f" | grep -A5 '"""'; done
-
-# List actual scripts
-ls scripts/*.sh
-
-# Extract Makefile targets
-grep -E '^[a-z_-]+:' Makefile*
-
-# List actual test files
-ls tests/*.py tests/**/*.py
-```
-
-### Anti-Patterns to Avoid
-
-- **WRONG:** Updating only dates and counts based on git commits
-- **WRONG:** Trusting that existing AGENTS.md was created correctly
-- **WRONG:** Copying file lists without verifying they exist
-- **WRONG:** Using extracted command output without running it
-- **RIGHT:** Extract → Compare → Fix discrepancies → Validate
-
-## Agent-Optimized Design
-
-This skill generates AGENTS.md files optimized for AI coding agent efficiency based on:
-- [Research showing 16.58% token reduction with good AGENTS.md](https://arxiv.org/html/2601.20404)
-- [GitHub best practices from 2,500+ repositories](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/)
-- Multi-agent collaborative design (Claude + Gemini discussion)
-
-### Key Design Principles
-
-1. **Structured over Prose** - Tables and maps parse faster than paragraphs
-2. **Verified Commands** - Commands that don't work waste 500+ tokens debugging
-3. **Pointer Principle** - Point to files, don't duplicate content
-4. **Time Estimates** - Help agents choose appropriate test scope
-5. **Golden Samples** - One example file beats pages of explanation
-6. **Heuristics Tables** - Eliminate decision ambiguity
-
-### Token-Saving Sections
-
-| Section | Saves | How |
-|---------|-------|-----|
-| Commands (verified) | 500+ tokens | No debugging broken commands |
-| File Map | 3-5 search cycles | Direct navigation |
-| Golden Samples | Full rewrites | Correct patterns first time |
-| Utilities List | Duplicate code | Reuse existing helpers |
-| Heuristics | User correction cycles | Autonomous decisions |
-| Codebase State | Breaking changes | Avoid legacy/migration code |
-
-## Capabilities
-
-- **Thin root files** (~50 lines) with precedence rules and agent-optimized tables
-- **Scoped files** for subsystems (backend/, frontend/, internal/, cmd/)
-- **Auto-extracted commands** from Makefile, package.json, composer.json, go.mod
-- **Language-specific templates** for Go, PHP, TypeScript, Python, hybrid projects
-- **Freshness checking** - Detects if AGENTS.md files are outdated by comparing their "Last updated" date with git commits
-- **Automatic timestamps** - All generated files include creation/update dates in the header
-- **Documentation extraction** - Parses README.md, CONTRIBUTING.md, SECURITY.md, CHANGELOG.md
-- **Platform file extraction** - Parses .github/, .gitlab/ templates, CODEOWNERS, dependabot.yml
-- **IDE settings extraction** - Parses .editorconfig, .vscode/, .idea/, .phpstorm/
-- **AI agent config extraction** - Parses .cursor/, .claude/, .windsurf/, copilot-instructions.md
-- **Extraction summary** - Verbose mode shows all detected settings and their sources
-
-## Running Scripts
-
-### Generating AGENTS.md Files
-
-To generate AGENTS.md files for a project:
-
-```bash
-scripts/generate-agents.sh /path/to/project
-```
-
-Options:
-- `--dry-run` - Preview changes without writing files
-- `--verbose` - Show detailed output
-- `--style=thin` - Use thin root template (~30 lines, default)
-- `--style=verbose` - Use verbose root template (~100-200 lines)
-- `--update` - Update existing files only (preserves human edits outside generated markers)
-- `--claude-shim` - Generate CLAUDE.md that imports AGENTS.md for Claude Code compatibility
-- `--force` - Regenerate even if files exist
-
-### Validating Structure
-
-To validate AGENTS.md structure compliance:
-
-```bash
-scripts/validate-structure.sh /path/to/project
-```
-
-Options:
-- `--check-freshness, -f` - Also check if files are up to date with git commits
-- `--verbose, -v` - Show detailed output
-
-### Checking Freshness
-
-To check if AGENTS.md files are up to date with recent git commits:
-
-```bash
-scripts/check-freshness.sh /path/to/project
-```
-
-This script:
-- Extracts the "Last updated" date from the AGENTS.md header
-- Checks git commits since that date for files in the relevant scope
-- Reports if there are commits that might require AGENTS.md updates
-
-Options:
-- `--verbose, -v` - Show commit details and changed files
-- `--threshold=DAYS` - Days threshold to consider stale (default: 7)
-
-Example with full validation:
-```bash
-scripts/validate-structure.sh /path/to/project --check-freshness --verbose
-```
-
-### Detecting Project Type
-
-To detect project language, version, and build tools:
-
-```bash
-scripts/detect-project.sh /path/to/project
-```
-
-### Detecting Scopes
-
-To identify directories that should have scoped AGENTS.md files:
-
-```bash
-scripts/detect-scopes.sh /path/to/project
-```
-
-### Extracting Commands
-
-To extract build commands from Makefile, package.json, composer.json, or go.mod:
-
-```bash
-scripts/extract-commands.sh /path/to/project
-```
-
-### Extracting Documentation
-
-To extract information from README.md, CONTRIBUTING.md, SECURITY.md, and other documentation:
-
-```bash
-scripts/extract-documentation.sh /path/to/project
-```
-
-### Extracting Platform Files
-
-To extract information from .github/, .gitlab/, CODEOWNERS, dependabot.yml, etc.:
-
-```bash
-scripts/extract-platform-files.sh /path/to/project
-```
-
-### Extracting IDE Settings
-
-To extract information from .editorconfig, .vscode/, .idea/, etc.:
-
-```bash
-scripts/extract-ide-settings.sh /path/to/project
-```
-
-### Extracting AI Agent Configs
-
-To extract information from .cursor/, .claude/, copilot-instructions.md, etc.:
-
-```bash
-scripts/extract-agent-configs.sh /path/to/project
-```
-
-### Verifying Content Accuracy
-
-**CRITICAL: Always run this before considering AGENTS.md files complete.**
-
-To verify that AGENTS.md content matches actual codebase state:
-
-```bash
-scripts/verify-content.sh /path/to/project
-```
-
-This script:
-- Checks if documented files actually exist
-- Verifies Makefile targets are real
-- Compares module/script counts against actual files
-- Reports undocumented files that should be added
-- Reports documented files that don't exist
-
-Options:
-- `--verbose, -v` - Show detailed verification output
-- `--fix` - Suggest fixes for common issues
-
-**This verification step is MANDATORY when updating existing AGENTS.md files.**
-
-### Verifying Commands Work
-
-To prevent "command rot" (documented commands that no longer work):
-
-```bash
-scripts/verify-commands.sh /path/to/project
-```
-
-This script:
-- Extracts commands from AGENTS.md tables and code blocks
-- Verifies npm/yarn scripts exist in package.json
-- Verifies make targets exist in Makefile
-- Verifies composer scripts exist in composer.json
-- Updates "Last verified" timestamp on success
-
-Options:
-- `VERBOSE=true` - Show detailed output
-- `DRY_RUN=true` - Don't update timestamp
-
-**Why this matters:** Research shows broken commands waste 500+ tokens as agents debug non-existent commands. Verified commands enable confident execution.
-
-## Using Reference Documentation
-
-### AGENTS.md Analysis
-
-When understanding best practices and patterns, consult `references/analysis.md` for analysis of 21 real-world AGENTS.md files.
-
-### Directory Coverage
-
-When determining which directories need AGENTS.md files, consult `references/directory-coverage.md` for guidance on PHP/TYPO3, Go, and TypeScript project structures.
-
-### Real-World Examples
-
-When needing concrete examples of AGENTS.md files, consult `references/examples/`:
-
-| Project | Files | Description |
-|---------|-------|-------------|
-| `coding-agent-cli/` | Root + scripts scope | CLI tool example |
-| `ldap-selfservice/` | Root + internal scopes | Go web app with multiple scopes |
-| `simple-ldap-go/` | Root + examples scope | Go library example |
-| `t3x-rte-ckeditor-image/` | Root + Classes scope | TYPO3 extension example |
-
-## Using Asset Templates
-
-### Root Templates
-
-When generating root AGENTS.md files, the scripts use these templates:
-
-- `assets/root-thin.md` - Minimal root template (~30 lines) with precedence rules and scope index
-- `assets/root-verbose.md` - Detailed root template (~100 lines) with architecture overview and examples
-
-### Scoped Templates
-
-When generating scoped AGENTS.md files, the scripts use language-specific templates:
-
-- `assets/scoped/backend-go.md` - Go backend patterns (packages, error handling, testing)
-- `assets/scoped/backend-php.md` - PHP backend patterns (PSR, DI, security)
-- `assets/scoped/typo3.md` - TYPO3 extension patterns (TCA, Extbase, Fluid, TYPO3 CGL)
-- `assets/scoped/oro.md` - Oro bundle patterns (datagrids, workflows, ACL, message queue)
-- `assets/scoped/cli.md` - CLI patterns (flags, output, error codes)
-- `assets/scoped/frontend-typescript.md` - TypeScript frontend patterns (components, state, testing)
-
-## Supported Project Types
-
-| Language | Project Types |
-|----------|---------------|
-| Go | Libraries, web apps (Fiber/Echo/Gin), CLI (Cobra/urfave) |
-| PHP | Composer packages, Laravel/Symfony |
-| PHP/TYPO3 | TYPO3 extensions (auto-detected via `ext_emconf.php`) |
-| PHP/Oro | OroCommerce, OroPlatform, OroCRM bundles |
-| TypeScript | React, Next.js, Vue, Node.js |
-| Python | pip, poetry, Django, Flask, FastAPI |
-| Hybrid | Multi-language projects (auto-creates scoped files per stack) |
-
-## Output Structure
-
-### Root File
-
-Root AGENTS.md (~50-80 lines) contains agent-optimized sections:
-
-| Section | Purpose | Format |
-|---------|---------|--------|
-| **Commands (verified)** | Executable commands with time estimates | Table with ~Time column |
-| **File Map** | Directory purposes for navigation | `dir/ → purpose` format |
-| **Golden Samples** | Canonical patterns to follow | Table: For / Reference / Key patterns |
-| **Utilities List** | Existing helpers to reuse | Table: Need / Use / Location |
-| **Heuristics** | Quick decision rules | Table: When / Do |
-| **Boundaries** | Always/Ask/Never rules | Three-tier list |
-| **Codebase State** | Migrations, tech debt, known issues | Bullet list |
-| **Terminology** | Domain-specific terms | Table: Term / Means |
-| **Scope Index** | Links to scoped files | List with descriptions |
-
-### Scoped Files
-
-Scoped AGENTS.md files cover six core areas (per [GitHub best practices](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/)):
-1. **Commands** - Executable build, test, lint commands
-2. **Testing** - Test conventions and execution
-3. **Project Structure** - Architecture and key files
-4. **Code Style** - Formatting and conventions
-5. **Git Workflow** - Commit/PR guidelines
-6. **Boundaries** - Always do / Ask first / Never do
-
-Additional recommended sections:
-- Overview
-- Setup/Prerequisites
-- Security
-- Good vs Bad examples
-- When stuck
-- House Rules (for scoped overrides)
-
-## AI Tool Compatibility
-
-### Claude Code
-
-Claude Code centers on CLAUDE.md files. For compatibility, use the `--claude-shim` flag to generate a CLAUDE.md that imports AGENTS.md:
-
-```bash
-scripts/generate-agents.sh /path/to/project --claude-shim
-```
-
-This creates a minimal CLAUDE.md:
-```markdown
-
-@import AGENTS.md
-```
-
-This ensures AGENTS.md remains the source of truth while Claude Code can access it.
-
-### OpenAI Codex
-
-Codex uses stacking semantics with AGENTS.override.md for per-directory overrides:
-
-1. **Concatenation order:** `~/.codex/AGENTS.md` → root → nested directories → current dir
-2. **Override files:** Place `AGENTS.override.md` in directories to add/override rules
-3. **Size limit:** Default 32 KiB cap - keep root AGENTS.md lean so nested files aren't crowded out
-
-**Best practices for Codex:**
-- Keep root AGENTS.md under 4 KiB (leaves room for 7+ nested files)
-- Use `--style=thin` template for optimal Codex compatibility
-- Move detailed rules to scoped AGENTS.md files in subdirectories
-- Use AGENTS.override.md for directory-specific behavior changes
-
-Example override structure:
-```
-project/
-├── AGENTS.md # Thin root (~2 KiB)
-├── src/
-│ ├── AGENTS.md # Source patterns
-│ └── AGENTS.override.md # Override root rules for src/
-└── tests/
- ├── AGENTS.md # Test patterns
- └── AGENTS.override.md # Allow larger PRs in tests/
-```
-
-### GitHub Copilot
-
-GitHub Copilot uses `.github/copilot-instructions.md` for repository-wide instructions. This skill extracts existing Copilot instructions and can coexist with AGENTS.md files.
-
-## Directory Coverage
-
-When creating AGENTS.md files, create them in ALL key directories:
-
-| Directory | Purpose |
-|-----------|---------|
-| Root | Precedence, architecture overview |
-| `Classes/` or `src/` | Source code patterns |
-| `Configuration/` or `config/` | Framework config |
-| `Documentation/` or `docs/` | Doc standards |
-| `Resources/` or `assets/` | Templates, assets |
-| `Tests/` | Testing patterns |
-
----
-
-> **Contributing:** https://github.com/netresearch/agents-skill
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md b/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md
deleted file mode 100644
index 244a94e4e..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-# AGENTS.md
-
-**Precedence:** the **closest `AGENTS.md`** to the files you're changing wins. Root holds global defaults only.
-
-## Commands (verified ✓)
-
-| Task | Command | ~Time |
-|------|---------|-------|
-| Typecheck | {{TYPECHECK_CMD}} | {{TYPECHECK_TIME}} |
-| Lint | {{LINT_CMD}} | {{LINT_TIME}} |
-| Format | {{FORMAT_CMD}} | {{FORMAT_TIME}} |
-| Test (single) | {{TEST_SINGLE_CMD}} | ~2s |
-| Test (all) | {{TEST_CMD}} | {{TEST_TIME}} |
-| Build | {{BUILD_CMD}} | {{BUILD_TIME}} |
-
-
-> If commands fail, run `scripts/verify-commands.sh` or ask user to update.
-
-## File Map
-
-```
-{{FILE_MAP}}
-```
-
-
-## Golden Samples (follow these patterns)
-
-| For | Reference | Key patterns |
-|-----|-----------|--------------|
-{{GOLDEN_SAMPLES}}
-
-
-## Utilities (check before creating new)
-
-| Need | Use | Location |
-|------|-----|----------|
-{{UTILITIES_LIST}}
-
-
-## Heuristics (quick decisions)
-
-| When | Do |
-|------|-----|
-{{HEURISTICS}}
-| Adding dependency | Ask first - we minimize deps |
-| Unsure about pattern | Check Golden Samples above |
-
-
-## Boundaries
-
-### Always Do
-- Run pre-commit checks before committing
-- Add tests for new code paths
-- Use conventional commit format: `type(scope): subject`
-{{LANGUAGE_CONVENTIONS}}
-
-### Ask First
-- Adding new dependencies
-- Modifying CI/CD configuration
-- Changing public API signatures
-- Running full e2e test suites
-- Repo-wide refactoring or rewrites
-
-### Never Do
-- Commit secrets, credentials, or sensitive data
-- Modify vendor/, node_modules/, or generated files
-- Push directly to main/master branch
-- Delete migration files or schema changes
-{{LANGUAGE_SPECIFIC_NEVER}}
-
-## Codebase State
-
-{{CODEBASE_STATE}}
-
-
-## Terminology
-| Term | Means |
-|------|-------|
-{{TERMINOLOGY}}
-
-## Index of scoped AGENTS.md
-
-{{SCOPE_INDEX}}
-
-
-## When instructions conflict
-The nearest `AGENTS.md` wins. Explicit user prompts override files.
-{{LANGUAGE_SPECIFIC_CONFLICT_RESOLUTION}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md b/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md
deleted file mode 100644
index 974f50fca..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-# AGENTS.md
-
-**Precedence:** The **closest AGENTS.md** to changed files wins. Root holds global defaults only.
-
-## Project Overview
-
-{{PROJECT_DESCRIPTION}}
-
-**Tech Stack**: {{LANGUAGE}} {{VERSION}}, {{BUILD_TOOL}}, {{FRAMEWORK}}
-**Type**: {{PROJECT_TYPE}}
-
-
-## Global Rules
-- Keep PRs small (~≤300 net LOC)
-- Conventional Commits: `type(scope): subject`
-{{LANGUAGE_CONVENTIONS}}
-
-## Boundaries
-
-### Always Do
-- Run pre-commit checks before committing
-- Add tests for new code paths
-- Use conventional commit format: `type(scope): subject`
-- Keep dependencies updated
-- Validate all user inputs
-
-### Ask First
-- Adding new dependencies
-- Modifying CI/CD configuration
-- Changing public API signatures
-- Running full e2e test suites
-- Repo-wide refactoring or rewrites
-- Modifying security-sensitive code
-- Changing database schemas
-
-### Never Do
-- Commit secrets, credentials, API keys, or PII
-- Modify vendor/, node_modules/, or generated files
-- Push directly to main/master branch
-- Delete migration files or schema changes
-- Disable security features or linting rules
-- Hardcode environment-specific values
-{{LANGUAGE_SPECIFIC_NEVER}}
-
-## Development Workflow
-1. Create feature branch: `git checkout -b feature/description`
-2. Make changes with tests
-3. Run pre-commit checks (see below)
-4. Commit with conventional format
-5. Push and create PR
-6. Address review feedback
-7. Merge when approved
-
-## Pre-commit Checks
-
-**Always run before committing:**
-- Typecheck: {{TYPECHECK_CMD}}
-- Lint: {{LINT_CMD}}
-- Format: {{FORMAT_CMD}}
-- Tests: {{TEST_CMD}}
-- Build: {{BUILD_CMD}}
-
-
-## Code Quality Standards
-
-{{QUALITY_STANDARDS}}
-
-
-## Security & Safety
-- Never commit secrets, credentials, or PII
-- Validate all user inputs
-- Use parameterized queries for database access
-- Keep dependencies updated
-{{SECURITY_SPECIFIC}}
-
-## Testing Requirements
-
-- Write tests for new features
-- Maintain {{TEST_COVERAGE}}% minimum coverage
-- Run fast tests locally: {{TEST_FAST_CMD}}
-- Run full suite in CI: {{TEST_FULL_CMD}}
-
-
-## Index of Scoped AGENTS.md
-
-{{SCOPE_INDEX}}
-
-
-## When Instructions Conflict
-Nearest AGENTS.md wins. User prompts override files.
-{{LANGUAGE_SPECIFIC_CONFLICT_RESOLUTION}}
-
-## Code Examples
-
-### Good Pattern
-{{GOOD_EXAMPLE}}
-
-### Avoid
-{{BAD_EXAMPLE}}
-
-## Documentation
-
-- Architecture: {{ARCHITECTURE_DOC}}
-- API docs: {{API_DOC}}
-- Contributing: {{CONTRIBUTING_DOC}}
-
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md
deleted file mode 100644
index b786a2d6d..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-## Setup & environment
-- Install: `go mod download`
-- Go version: {{GO_VERSION}}
-- Required tools: {{GO_TOOLS}}
-- Environment variables: {{ENV_VARS}}
-
-## Build & tests (prefer file-scoped)
-- Typecheck a file: `go build -v {{FILE_PATH}}`
-- Format a file: `gofmt -w {{FILE_PATH}}`
-- Lint a file: `golangci-lint run {{FILE_PATH}}`
-- Test a file: `go test -v -race -short {{FILE_PATH}}`
-- Build: {{BUILD_CMD}}
-
-## Code style & conventions
-- Follow Go 1.{{GO_MINOR_VERSION}} idioms
-- Use standard library over external deps when possible
-- Errors: wrap with `fmt.Errorf("context: %w", err)`
-- Naming: `camelCase` for private, `PascalCase` for exported
-- Struct tags: use canonical form (json, yaml, etc.)
-- Comments: complete sentences ending with period
-- Package docs: first sentence summarizes purpose
-
-## Security & safety
-- Validate all inputs from external sources
-- Use `context.Context` for cancellation and timeouts
-- Avoid goroutine leaks: always ensure termination paths
-- Sensitive data: never log or include in errors
-- SQL: use parameterized queries only
-- File paths: validate and sanitize user-provided paths
-
-## PR/commit checklist
-- [ ] Tests pass: `go test -v -race ./...`
-- [ ] Lint clean: `golangci-lint run ./...`
-- [ ] Formatted: `gofmt -w .`
-- [ ] No goroutine leaks
-- [ ] Error messages are descriptive
-- [ ] Public APIs have godoc comments
-
-## Good vs. bad examples
-**Good**: Descriptive error wrapping
-```go
-if err := db.Query(); err != nil {
- return fmt.Errorf("failed to query users table: %w", err)
-}
-```
-
-**Bad**: Generic error messages
-```go
-if err := db.Query(); err != nil {
- return fmt.Errorf("error: %w", err)
-}
-```
-
-**Good**: Proper context usage
-```go
-func (s *Service) FetchData(ctx context.Context, id string) error {
- ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
- defer cancel()
- return s.client.Get(ctx, id)
-}
-```
-
-## When stuck
-- Check Go documentation: https://pkg.go.dev
-- Review existing patterns in this codebase
-- Check root AGENTS.md for project-wide conventions
-- Run `go doc ` for standard library help
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md
deleted file mode 100644
index 8d5ccedf9..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-## Setup & environment
-- Install: `composer install`
-- PHP version: {{PHP_VERSION}}
-- Framework: {{FRAMEWORK}}
-- Required extensions: {{PHP_EXTENSIONS}}
-- Environment variables: {{ENV_VARS}}
-
-## Build & tests (prefer file-scoped)
-- Typecheck a file: `vendor/bin/phpstan analyze {{FILE_PATH}} --level={{PHPSTAN_LEVEL}}`
-- Format a file: `vendor/bin/php-cs-fixer fix {{FILE_PATH}}`
-- Lint a file: `php -l {{FILE_PATH}}`
-- Test a file: `vendor/bin/phpunit {{FILE_PATH}}`
-- Build: {{BUILD_CMD}}
-
-## Code style & conventions
-- Follow PSR-12 coding standard
-- Use strict types: `declare(strict_types=1);`
-- Type hints: always use for parameters and return types
-- Naming: `camelCase` for methods, `PascalCase` for classes
-- Visibility: always declare (public, protected, private)
-- PHPDoc: required for public APIs, include `@param` and `@return`
-{{FRAMEWORK_CONVENTIONS}}
-
-## Security & safety
-- Validate and sanitize all user inputs
-- Use prepared statements for database queries
-- Escape output in templates
-- Never use `eval()` or dynamic code execution
-- Sensitive data: never log or expose in errors
-- CSRF protection: enable for all forms
-- XSS protection: escape all user-generated content
-
-## PR/commit checklist
-- [ ] Tests pass: `vendor/bin/phpunit`
-- [ ] PHPStan Level {{PHPSTAN_LEVEL}} clean: `vendor/bin/phpstan analyze`
-- [ ] PSR-12 compliant: `vendor/bin/php-cs-fixer fix --dry-run`
-- [ ] No deprecated functions used
-- [ ] Public methods have PHPDoc
-- [ ] Security: inputs validated, outputs escaped
-
-## Good vs. bad examples
-**Good**: Proper type hints and strict types
-```php
-declare(strict_types=1);
-
-public function calculateTotal(int $quantity, float $price): float
-{
- return $quantity * $price;
-}
-```
-
-**Bad**: Missing type hints
-```php
-public function calculateTotal($quantity, $price)
-{
- return $quantity * $price;
-}
-```
-
-**Good**: Prepared statements
-```php
-$stmt = $db->prepare('SELECT * FROM users WHERE id = :id');
-$stmt->execute(['id' => $userId]);
-```
-
-**Bad**: String concatenation
-```php
-$result = $db->query("SELECT * FROM users WHERE id = " . $userId);
-```
-
-## When stuck
-- Check PHP documentation: https://www.php.net
-- {{FRAMEWORK_DOCS}}
-- Review existing patterns in this codebase
-- Check root AGENTS.md for project-wide conventions
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md
deleted file mode 100644
index 3318c6a70..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-## Setup & environment
-- Install: `{{INSTALL_CMD}}`
-- Python version: {{PYTHON_VERSION}}
-- Package manager: {{PACKAGE_MANAGER}}
-- Virtual env: `{{VENV_CMD}}`
-- Environment variables: {{ENV_VARS}}
-
-## Build & tests (prefer file-scoped)
-- Typecheck a file: `{{TYPECHECK_CMD}} {{FILE_PATH}}`
-- Format a file: `{{FORMAT_CMD}} {{FILE_PATH}}`
-- Lint a file: `{{LINT_CMD}} {{FILE_PATH}}`
-- Test a file: `{{TEST_CMD}} {{FILE_PATH}}`
-- Build: {{BUILD_CMD}}
-
-## Code style & conventions
-- Follow PEP 8 style guide
-- Use type hints for all function signatures
-- Naming: `snake_case` for functions/variables, `PascalCase` for classes
-- Docstrings: Google style, required for public APIs
-- Imports: group by stdlib, third-party, local (use isort)
-- Modern Python: prefer `|` over `Union`, `list` over `List`
-{{FRAMEWORK_CONVENTIONS}}
-
-## Security & safety
-- Validate and sanitize all user inputs
-- Use parameterized queries for database access
-- Never use dynamic code evaluation with untrusted data
-- Sensitive data: never log or expose in errors
-- File paths: validate and use `pathlib` for path operations
-- Subprocess: use list args, avoid shell=True with user input
-
-## PR/commit checklist
-- [ ] Tests pass: `{{TEST_CMD}}`
-- [ ] Type check clean: `{{TYPECHECK_CMD}}`
-- [ ] Lint clean: `{{LINT_CMD}}`
-- [ ] Formatted: `{{FORMAT_CMD}}`
-- [ ] No security issues: `bandit -r .`
-- [ ] Public functions have docstrings
-
-## Good vs. bad examples
-**Good**: Type hints and proper error handling
-```python
-def fetch_user(user_id: int) -> User | None:
- """Fetch user by ID, returns None if not found."""
- try:
- return db.query(User).filter_by(id=user_id).first()
- except DatabaseError as e:
- logger.error("Failed to fetch user %d: %s", user_id, e)
- raise
-```
-
-**Bad**: Missing types and bare except
-```python
-def fetch_user(user_id):
- try:
- return db.query(User).filter_by(id=user_id).first()
- except:
- pass
-```
-
-**Good**: Context managers and pathlib
-```python
-from pathlib import Path
-
-def read_config(path: Path) -> dict:
- with path.open() as f:
- return json.load(f)
-```
-
-## When stuck
-- Check Python documentation: https://docs.python.org
-- Review existing patterns in this codebase
-- Check root AGENTS.md for project-wide conventions
-- Use `python -m pydoc ` for stdlib help
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md
deleted file mode 100644
index 16c4725c6..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-## Setup & environment
-- Install: `{{INSTALL_CMD}}`
-- Node version: {{NODE_VERSION}}
-- Package manager: {{PACKAGE_MANAGER}}
-- Runtime: {{RUNTIME}}
-- Environment variables: {{ENV_VARS}}
-
-## Build & tests (prefer file-scoped)
-- Typecheck a file: `{{TYPECHECK_CMD}}`
-- Format a file: `{{FORMAT_CMD}} {{FILE_PATH}}`
-- Lint a file: `{{LINT_CMD}} {{FILE_PATH}}`
-- Test a file: `{{TEST_CMD}} {{FILE_PATH}}`
-- Build: {{BUILD_CMD}}
-- Dev server: {{DEV_CMD}}
-
-## Code style & conventions
-- Use TypeScript strict mode (`strict: true` in tsconfig)
-- No `any` without explicit justification comment
-- Prefer `interface` over `type` for object shapes
-- Naming: `camelCase` for functions/vars, `PascalCase` for classes/types
-- Async/await over raw Promises
-- Prefer `const` over `let`, never use `var`
-- Destructure objects and arrays when appropriate
-{{FRAMEWORK_CONVENTIONS}}
-
-## Security & safety
-- Validate all user inputs (use zod or similar)
-- Parameterized queries only (no string concatenation)
-- Never use dynamic code evaluation with user data
-- Sensitive data: never log or expose in errors
-- Environment: use dotenv, never hardcode secrets
-- CORS: configure explicitly, no wildcard in production
-- Rate limiting: implement for public endpoints
-
-## PR/commit checklist
-- [ ] Tests pass: `{{TEST_CMD}}`
-- [ ] Type check clean: `{{TYPECHECK_CMD}}`
-- [ ] Lint clean: `{{LINT_CMD}}`
-- [ ] Formatted: `{{FORMAT_CMD}}`
-- [ ] No `any` types without justification
-- [ ] API endpoints have validation
-- [ ] Error responses don't leak internals
-
-## Good vs. bad examples
-**Good**: Proper types and async/await
-```typescript
-interface User {
- id: string;
- email: string;
-}
-
-async function fetchUser(id: string): Promise {
- const user = await db.users.findUnique({ where: { id } });
- return user;
-}
-```
-
-**Bad**: Using `any` and missing types
-```typescript
-async function fetchUser(id: any): Promise {
- const user = await db.users.findUnique({ where: { id } });
- return user;
-}
-```
-
-**Good**: Input validation with zod
-```typescript
-import { z } from 'zod';
-
-const CreateUserSchema = z.object({
- email: z.string().email(),
- name: z.string().min(1).max(100),
-});
-
-app.post('/users', async (req, res) => {
- const data = CreateUserSchema.parse(req.body);
- // data is typed and validated
-});
-```
-
-## When stuck
-- Check Node.js docs: https://nodejs.org/docs
-- TypeScript handbook: https://www.typescriptlang.org/docs
-- Review existing patterns in this codebase
-- Check root AGENTS.md for project-wide conventions
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md
deleted file mode 100644
index 724316638..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-Command-line interface tools and entry points.
-
-## Setup & environment
-{{SETUP_INSTRUCTIONS}}
-- CLI framework: {{CLI_FRAMEWORK}}
-- Build output: {{BUILD_OUTPUT_PATH}}
-
-## Build & tests (prefer file-scoped)
-- Build CLI: {{BUILD_CMD}}
-- Run CLI: {{RUN_CMD}}
-- Test: {{TEST_CMD}}
-- Lint: {{LINT_CMD}}
-
-## Code style & conventions
-- Use flag parsing library consistently ({{CLI_FRAMEWORK}})
-- Provide `--help` for all commands and subcommands
-- Use `--version` to display version information
-- Exit codes: 0 = success, 1 = general error, 2 = usage error
-- Output: structured (JSON) for scripts, human-readable for interactive
-- Errors: write to stderr, not stdout
-- Progress: show for long-running operations
-- Interactive prompts: support non-interactive mode with flags
-
-## Security & safety
-- Validate all file paths and prevent directory traversal
-- Never execute user-provided code without explicit confirmation
-- Sensitive data: never log or display in plain text
-- Config files: validate schema and permissions
-- Network operations: timeout and retry with backoff
-
-## PR/commit checklist
-- [ ] `--help` text is clear and accurate
-- [ ] `--version` displays correct version
-- [ ] Exit codes are correct
-- [ ] Errors go to stderr
-- [ ] Long operations show progress
-- [ ] Works in non-interactive mode
-- [ ] Tests cover main workflows
-
-## Good vs. bad examples
-**Good**: Proper error handling
-```{{LANGUAGE}}
-if err := runCommand(); err != nil {
- fmt.Fprintf(os.Stderr, "Error: %v\n", err)
- os.Exit(1)
-}
-```
-
-**Bad**: Errors to stdout
-```{{LANGUAGE}}
-if err := runCommand(); err != nil {
- fmt.Println("Error:", err)
-}
-```
-
-**Good**: Clear help text
-```
-Usage: myapp [options]
-
-Commands:
- init Initialize a new project
- build Build the project
- deploy Deploy to production
-
-Options:
- --config string Config file path (default: config.yaml)
- --verbose Enable verbose output
-```
-
-## When stuck
-- Review {{CLI_FRAMEWORK}} documentation
-- Check existing commands for patterns
-- Test with `--help` to ensure clarity
-- Check root AGENTS.md for project conventions
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md
deleted file mode 100644
index 88a54f825..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-Project documentation, guides, and reference materials.
-
-## Setup & environment
-- Documentation may use a static site generator (check for config files)
-- Preview locally before committing major changes
-- Check for broken links and formatting issues
-
-## Building docs
-- Preview: check for `npm run docs`, `make docs`, or similar
-- Build: check for documentation build commands in root
-- Serve locally to verify rendering
-
-## Documentation structure
-- `README.md` - Entry point, project overview
-- `getting-started/` - Installation and quick start guides
-- `guides/` - How-to guides and tutorials
-- `reference/` - API documentation, configuration reference
-- `architecture/` - Design documents, ADRs
-- `contributing/` - Contribution guidelines
-
-## Code style & conventions
-- Use clear, concise language
-- Include code examples for technical concepts
-- Keep line length reasonable (~80-120 chars for readability)
-- Use consistent heading hierarchy (H1 for page title, H2 for sections)
-- Add alt text to images for accessibility
-- Use relative links for internal references
-- Keep code examples up-to-date with actual codebase
-
-## Markdown best practices
-- Use fenced code blocks with language hints: \`\`\`python
-- Use tables for structured data comparison
-- Use admonitions for warnings/notes (if supported)
-- Keep paragraphs focused on one idea
-- Use bullet points for lists, numbered lists for sequences
-
-## Security & safety
-- Never include secrets, API keys, or credentials in examples
-- Use placeholder values: `your-api-key`, `example.com`
-- Review screenshots for sensitive information
-- Avoid documenting security vulnerabilities in detail
-
-## PR/commit checklist
-- [ ] Documentation matches current code behavior
-- [ ] Code examples are tested and work
-- [ ] Links are valid (no 404s)
-- [ ] Images have alt text
-- [ ] Spelling and grammar checked
-- [ ] Formatting renders correctly
-
-## Good vs. bad examples
-**Good**: Clear code example
-```python
-# Install the package
-pip install mypackage
-
-# Basic usage
-from mypackage import Client
-client = Client(api_key="your-api-key")
-result = client.process("input")
-```
-
-**Bad**: Incomplete example
-```python
-# Use the client
-client.process() # Missing context, imports, setup
-```
-
-**Good**: Structured reference
-```markdown
-## Configuration Options
-
-| Option | Type | Default | Description |
-|--------|------|---------|-------------|
-| `timeout` | int | 30 | Request timeout in seconds |
-| `retries` | int | 3 | Number of retry attempts |
-```
-
-**Bad**: Unstructured reference
-```markdown
-Set timeout to change the timeout. Use retries for retries.
-```
-
-## When stuck
-- Check existing documentation for patterns
-- Review the style guide (if one exists)
-- Preview changes locally before committing
-- Check root AGENTS.md for project conventions
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md
deleted file mode 100644
index 0bb9b7b88..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-Example applications, usage patterns, and sample code.
-
-## Setup & environment
-- Examples should be self-contained and runnable
-- Each example may have its own dependencies (check local README)
-- Examples should work with the current version of the main package
-
-## Running examples
-- Check each example's README for specific instructions
-- Most examples: `cd example-name && follow README`
-- Some examples may require environment setup
-
-## Example organization
-- One directory per example/use case
-- Each example has its own README explaining what it demonstrates
-- Keep examples focused on one concept or pattern
-- Name examples descriptively: `basic-usage/`, `advanced-config/`, `integration-with-x/`
-
-## Code style & conventions
-- Examples should be educational and well-commented
-- Use realistic but simplified scenarios
-- Show best practices, not shortcuts
-- Include error handling to demonstrate proper patterns
-- Keep examples minimal - only what's needed to demonstrate the concept
-- Avoid complex setups that distract from the main point
-
-## Documentation requirements
-- Each example needs a README with:
- - What this example demonstrates
- - Prerequisites and setup steps
- - How to run the example
- - Expected output or behavior
- - Links to relevant documentation
-
-## Security & safety
-- Never include real API keys or credentials
-- Use environment variables for sensitive config: `export API_KEY=your-key`
-- Use sandbox/test environments when interacting with external services
-- Include warnings for examples that make real API calls
-
-## PR/commit checklist
-- [ ] Example runs successfully
-- [ ] README is complete and accurate
-- [ ] No hardcoded credentials
-- [ ] Code demonstrates best practices
-- [ ] Comments explain non-obvious parts
-- [ ] Example works with current package version
-
-## Good vs. bad examples
-**Good**: Self-contained with clear purpose
-```
-examples/
-├── basic-usage/
-│ ├── README.md # Explains purpose and how to run
-│ ├── main.py # Complete, runnable example
-│ └── requirements.txt
-└── advanced-config/
- ├── README.md
- └── main.py
-```
-
-**Bad**: Incomplete or unclear
-```
-examples/
-├── example1.py # No README, unclear purpose
-├── test.py # Naming doesn't explain what it shows
-└── demo.py # Requires undocumented setup
-```
-
-**Good**: Educational comments
-```python
-# This example shows how to configure retry behavior
-# for handling transient network failures
-
-from mypackage import Client
-
-# Configure with exponential backoff (recommended for production)
-client = Client(
- retries=3, # Number of retry attempts
- backoff_factor=2.0, # Exponential backoff multiplier
-)
-```
-
-**Bad**: No context
-```python
-from mypackage import Client
-client = Client(retries=3, backoff_factor=2.0)
-```
-
-## When stuck
-- Check similar examples for patterns
-- Ensure the example is self-contained
-- Test the example from scratch (fresh environment)
-- Check root AGENTS.md for project conventions
-
-## House Rules (optional)
-{{HOUSE_RULES}}
diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md
deleted file mode 100644
index 534702826..000000000
--- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-# AGENTS.md — {{SCOPE_NAME}}
-
-## Overview
-{{SCOPE_DESCRIPTION}}
-
-## Setup & environment
-- Install: `npm install` or `yarn install`
-- Node version: {{NODE_VERSION}}
-- Framework: {{FRAMEWORK}}
-- Package manager: {{PACKAGE_MANAGER}}
-- Environment variables: {{ENV_VARS}}
-
-## Build & tests (prefer file-scoped)
-- Typecheck a file: `npx tsc --noEmit {{FILE_PATH}}`
-- Lint a file: `npx eslint {{FILE_PATH}}`
-- Format a file: `npx prettier --write {{FILE_PATH}}`
-- Test a file: `npm test {{FILE_PATH}}`
-- Build: {{BUILD_CMD}}
-- Dev server: {{DEV_CMD}}
-
-## Code style & conventions
-- TypeScript strict mode enabled
-- Use functional components with hooks (React)
-- Naming: `camelCase` for variables/functions, `PascalCase` for components
-- File naming: `ComponentName.tsx`, `utilityName.ts`
-- Imports: group and sort (external, internal, types)
-- CSS: {{CSS_APPROACH}} (CSS Modules, Tailwind, styled-components, etc.)
-{{FRAMEWORK_CONVENTIONS}}
-
-## Security & safety
-- Sanitize user inputs before rendering
-- Use `dangerouslySetInnerHTML` only with sanitized content
-- Validate environment variables at build time
-- Never expose secrets in client-side code
-- Use HTTPS for all API calls
-- Implement CSP headers
-- WCAG 2.2 AA accessibility compliance
-
-## PR/commit checklist
-- [ ] Tests pass: `npm test`
-- [ ] TypeScript compiles: `npx tsc --noEmit`
-- [ ] Lint clean: `npm run lint`
-- [ ] Formatted: `npm run format`
-- [ ] Accessibility: keyboard navigation works, ARIA labels present
-- [ ] Responsive: tested on mobile, tablet, desktop
-- [ ] Performance: no unnecessary re-renders
-
-## Good vs. bad examples
-**Good**: Proper TypeScript typing
-```typescript
-interface User {
- id: string;
- name: string;
- email: string;
-}
-
-function UserCard({ user }: { user: User }): JSX.Element {
- return
{user.name}
;
-}
-```
-
-**Bad**: Using `any`
-```typescript
-function UserCard({ user }: { user: any }) {
- return
+{/snippet}
+{@render tree(files)}
+```
+
+---
+
+## 6. Performance & Constraints
+
+- **No `this` context**: Snippets are pure template blocks.
+- **Lexical scoping**: Snippets can access variables in their definition scope, but explicit arguments are preferred.
+- **Typing**: Always use `import type { Snippet } from 'svelte'` for snippet props. For multiple args, use tuples: `Snippet<[string, number]>`.
+- **Use `$state.raw`** for large lists you replace entirely (skips deep proxying).
+
+---
+
+
+## 7. Pro Tips (2026)
+
+- `$state.snapshot()`: Get a static JS object from a reactive `$state` proxy (for non-Svelte libs).
+- **Events**: No more `createEventDispatcher`. Pass functions as props (e.g., `onclick`, `onupdate`).
+- **Do NOT use `on:click` or any `on:event` directive**: All `on:event` directives are deprecated in Svelte 5. Use event attributes like `onclick`, `onchange`, etc., directly on elements or pass them as props.
+- **Prefer runes** for all local reactivity.
+
+---
+
+## 8. Migration Svelte 4 → 5
+
+- Replace all `` with snippets and `{@render}`.
+- Migrate all reactivity to runes.
+- Adapt layouts and pages to the new structure.
+
+---
+
+## 9. Testing
+
+- Use Vitest for unit tests.
+- Test Svelte components with snippet mocks if needed.
+
+---
+
+## 10. MCP Integration
+
+- Use the Svelte MCP server for documentation, code analysis, and Svelte 5 code validation.
+- Always validate Svelte code with the MCP autofixer before delivery.
+
+---
+
+## 11. Useful Commands
+
+- Start dev server: `pnpm run dev`
+- Type-check: `pnpm exec tsc --noEmit`
+- Test: `pnpm test`
+
+---
+
+## 12. Internal References
+
+- See SVELTE.md for detailed project conventions.
+- See AGENTS.md for MCP integration.
+
+---
+
+**Use this skill for all Svelte 5 development, refactoring, or code review in this project.**
diff --git a/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md b/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md
deleted file mode 100644
index 5a29c4deb..000000000
--- a/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-name: svelte-code-writer
-description: CLI tools for Svelte 5 documentation lookup and code analysis. MUST be used whenever creating or editing any Svelte component (.svelte) or Svelte module (.svelte.ts/.svelte.js).
----
-
-# Svelte 5 Code Writer
-
-## Trigger
-
-**This skill MUST be triggered automatically whenever:**
-
-- A new `.svelte`, `.svelte.ts`, or `.svelte.js` file is created
-- An existing `.svelte`, `.svelte.ts`, or `.svelte.js` file is modified
-- The user explicitly requests to create or modify a Svelte file
-
-_Always invoke the Svelte 5 Code Writer skill before generating, editing, or refactoring any Svelte component or module file._
-
-## CLI Tools
-
-You have access to `@sveltejs/mcp` CLI for Svelte-specific assistance. Use these commands via `npx`:
-
-### List Documentation Sections
-
-`npx @sveltejs/mcp list-sections`
-
-### Get Documentation
-
-`npx @sveltejs/mcp get-documentation ",,..."`
-
-### Svelte Autofixer
-
-`npx @sveltejs/mcp svelte-autofixer "" [options]`
-_Note: Escape $ as \$ in terminal (e.g., \$state)._
-
-## Best Practices & Architecture Standards
-
-When generating or refactoring Svelte 5 components, strictly adhere to these rules:
-
-### 1. Script Module & Type Safety
-
-- All property interfaces and exported types **must** be declared in a module script block.
-- **Syntax**: `
-
-
-
-
-```
-
----
-
-## How do I document my components?
-
-In editors which use the Svelte Language Server you can document Components, functions and exports using specially formatted comments in html comments.
-
-```svelte
-
-
-
-```
\ No newline at end of file
diff --git a/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md b/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md
new file mode 100644
index 000000000..4ac8235ba
--- /dev/null
+++ b/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md
@@ -0,0 +1,225 @@
+---
+name: tailwind-v4
+description: Tailwind CSS v4 with CSS-first configuration and design tokens. Use when setting up Tailwind v4, defining theme variables, using OKLCH colors, or configuring dark mode. Triggers on @theme, @tailwindcss/vite, oklch, CSS variables, --color-, tailwind v4.
+---
+
+# Tailwind CSS v4 Best Practices
+
+## Quick Reference
+
+**Vite Plugin Setup**:
+```ts
+// vite.config.ts
+import tailwindcss from '@tailwindcss/vite';
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+ plugins: [tailwindcss()],
+});
+```
+
+**CSS Entry Point**:
+```css
+/* src/index.css */
+@import 'tailwindcss';
+```
+
+**@theme Inline Directive**:
+```css
+@theme inline {
+ --color-primary: oklch(60% 0.24 262);
+ --color-surface: oklch(98% 0.002 247);
+}
+```
+
+## Key Differences from v3
+
+| Feature | v3 | v4 |
+|---------|----|----|
+| Configuration | tailwind.config.js | @theme in CSS |
+| Build Tool | PostCSS plugin | @tailwindcss/vite |
+| Colors | rgb() / hsl() | oklch() (default) |
+| Theme Extension | extend: {} in JS | CSS variables |
+| Dark Mode | darkMode config option | CSS variants |
+
+## @theme Directive Modes
+
+### default (standard mode)
+Generates CSS variables that can be referenced elsewhere:
+```css
+@theme {
+ --color-brand: oklch(60% 0.24 262);
+}
+
+/* Generates: :root { --color-brand: oklch(...); } */
+/* Usage: text-brand → color: var(--color-brand) */
+```
+
+**Note**: You can also use `@theme default` explicitly to mark theme values that can be overridden by non-default @theme declarations.
+
+### inline
+Inlines values directly without CSS variables (better performance):
+```css
+@theme inline {
+ --color-brand: oklch(60% 0.24 262);
+}
+
+/* Usage: text-brand → color: oklch(60% 0.24 262) */
+```
+
+### reference
+Inlines values as fallbacks without emitting CSS variables:
+```css
+@theme reference {
+ --color-internal: oklch(50% 0.1 180);
+}
+
+/* No :root variable, but utilities use fallback */
+/* Usage: bg-internal → background-color: var(--color-internal, oklch(50% 0.1 180)) */
+```
+
+## OKLCH Color Format
+
+OKLCH provides perceptually uniform colors with better consistency across hues:
+
+```css
+oklch(L% C H)
+```
+
+- **L (Lightness)**: 0% (black) to 100% (white)
+- **C (Chroma)**: 0 (gray) to ~0.4 (vibrant)
+- **H (Hue)**: 0-360 degrees (red → yellow → green → blue → magenta)
+
+**Examples**:
+```css
+--color-sky-500: oklch(68.5% 0.169 237.323); /* Bright blue */
+--color-red-600: oklch(57.7% 0.245 27.325); /* Vibrant red */
+--color-zinc-900: oklch(21% 0.006 285.885); /* Near-black gray */
+```
+
+## CSS Variable Naming
+
+Tailwind v4 uses double-dash CSS variable naming conventions:
+
+```css
+@theme {
+ /* Colors: --color-{name}-{shade} */
+ --color-primary-500: oklch(60% 0.24 262);
+
+ /* Spacing: --spacing multiplier */
+ --spacing: 0.25rem; /* Base unit for spacing scale */
+
+ /* Fonts: --font-{family} */
+ --font-display: 'Inter Variable', system-ui, sans-serif;
+
+ /* Breakpoints: --breakpoint-{size} */
+ --breakpoint-lg: 64rem;
+
+ /* Custom animations: --animate-{name} */
+ --animate-fade-in: fade-in 0.3s ease-out;
+}
+```
+
+## No Config Files Needed
+
+Tailwind v4 eliminates configuration files:
+
+- **No `tailwind.config.js`** - Use @theme in CSS instead
+- **No `postcss.config.js`** - Use @tailwindcss/vite plugin
+- **TypeScript support** - Add `@types/node` for path resolution
+
+```json
+{
+ "devDependencies": {
+ "@tailwindcss/vite": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "tailwindcss": "^4.0.0",
+ "vite": "^6.0.0"
+ }
+}
+```
+
+## Progressive Disclosure
+
+- **Setup & Installation**: See [references/setup.md](references/setup.md) for Vite plugin configuration, package setup, TypeScript config
+- **Theming & Design Tokens**: See [references/theming.md](references/theming.md) for @theme modes, color palettes, custom fonts, animations
+- **Dark Mode Strategies**: See [references/dark-mode.md](references/dark-mode.md) for media queries, class-based, attribute-based approaches
+
+## Decision Guide
+
+### When to use @theme inline vs default
+
+**Use `@theme inline`**:
+- Better performance (no CSS variable overhead)
+- Static color values that won't change
+- Animation keyframes with multiple values
+- Utilities that need direct value inlining
+
+**Use `@theme` (default)**:
+- Dynamic theming with JavaScript
+- CSS variable references in custom CSS
+- Values that change based on context
+- Better debugging (inspect CSS variables in DevTools)
+
+### When to use @theme reference
+
+**Use `@theme reference`**:
+- Provide fallback values without CSS variable overhead
+- Values that should work even if variable isn't defined
+- Reducing :root bloat while maintaining utility support
+- Combining with inline for direct value substitution
+
+## Common Patterns
+
+### Two-Tier Variable System
+
+Semantic variables that map to design tokens:
+
+```css
+@theme {
+ /* Design tokens (OKLCH colors) */
+ --color-blue-600: oklch(54.6% 0.245 262.881);
+ --color-slate-800: oklch(27.9% 0.041 260.031);
+
+ /* Semantic mappings */
+ --color-primary: var(--color-blue-600);
+ --color-surface: var(--color-slate-800);
+}
+
+/* Usage: bg-primary, bg-surface */
+```
+
+### Custom Font Configuration
+
+```css
+@theme {
+ --font-display: 'Inter Variable', system-ui, sans-serif;
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
+
+ --font-display--font-variation-settings: 'wght' 400;
+ --font-display--font-feature-settings: 'cv02', 'cv03', 'cv04';
+}
+
+/* Usage: font-display, font-mono */
+```
+
+### Animation Keyframes
+
+```css
+@theme inline {
+ --animate-beacon: beacon 2s ease-in-out infinite;
+
+ @keyframes beacon {
+ 0%, 100% {
+ opacity: 1;
+ transform: scale(1);
+ }
+ 50% {
+ opacity: 0.5;
+ transform: scale(1.05);
+ }
+ }
+}
+
+/* Usage: animate-beacon */
+```
diff --git a/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md b/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md
new file mode 100644
index 000000000..6505e4de8
--- /dev/null
+++ b/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md
@@ -0,0 +1,458 @@
+# Dark Mode Strategies
+
+## Contents
+
+- [Media Query Strategy](#media-query-strategy)
+- [Class-Based Strategy](#class-based-strategy)
+- [Attribute-Based Strategy](#attribute-based-strategy)
+- [Theme Switching Implementation](#theme-switching-implementation)
+- [Respecting User Preferences](#respecting-user-preferences)
+
+---
+
+## Media Query Strategy
+
+Use the system preference for dark mode detection.
+
+### Configuration
+
+**Default behavior** (v4):
+```css
+/* No configuration needed - dark: variant works by default */
+@import 'tailwindcss';
+```
+
+**Generated CSS**:
+```css
+@media (prefers-color-scheme: dark) {
+ .dark\:bg-slate-900 {
+ background-color: oklch(20.8% 0.042 265.755);
+ }
+}
+```
+
+### Usage
+
+```tsx
+export function Card({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+```
+
+### Pros & Cons
+
+**Pros**:
+- Respects system preference automatically
+- No JavaScript needed
+- Simple implementation
+- No FOUC (flash of unstyled content)
+
+**Cons**:
+- Users can't override system preference
+- No manual toggle control
+- Changes when system setting changes
+
+### When to Use
+
+- Documentation sites
+- Content-focused websites
+- Apps where system preference is preferred
+- No need for manual theme switching
+
+## Class-Based Strategy
+
+Toggle dark mode with a `.dark` class on the root element.
+
+### Configuration
+
+**Pure v4 approach**: Use a v3 config file with darkMode setting:
+
+```js
+// tailwind.config.js (for v3 compatibility)
+module.exports = {
+ darkMode: 'class', // or 'selector' (same as 'class')
+};
+```
+
+**Note**: In pure v4, the default `dark:` variant uses media queries (`prefers-color-scheme: dark`). To use class-based dark mode, you need to either:
+1. Use a v3 config file with `darkMode: 'class'` (shown above)
+2. Use `@import "tailwindcss/compat"` and provide a config
+3. Define a custom variant with `@custom-variant`
+
+### Generated CSS
+
+```css
+.dark .dark\:bg-slate-900 {
+ background-color: oklch(20.8% 0.042 265.755);
+}
+```
+
+### Usage
+
+```tsx
+export function App() {
+ const [isDark, setIsDark] = useState(false);
+
+ useEffect(() => {
+ if (isDark) {
+ document.documentElement.classList.add('dark');
+ } else {
+ document.documentElement.classList.remove('dark');
+ }
+ }, [isDark]);
+
+ return (
+
+
+
+ );
+}
+```
+
+### Pros & Cons
+
+**Pros**:
+- Full JavaScript control
+- User can override system preference
+- Easy to implement manual toggle
+- Widely supported pattern
+
+**Cons**:
+- Requires JavaScript
+- Potential FOUC without SSR handling
+- Class management overhead
+
+### When to Use
+
+- Applications with theme toggle
+- User preference override needed
+- Dashboard/admin interfaces
+- Apps with per-user theme settings
+
+## Attribute-Based Strategy
+
+Use a `data-theme` attribute for more semantic theming.
+
+### Configuration (v3 compat)
+
+```js
+// tailwind.config.js (v3 compat mode)
+module.exports = {
+ darkMode: ['class', '[data-theme="dark"]'],
+};
+```
+
+### Generated CSS
+
+```css
+[data-theme="dark"] .dark\:bg-slate-900 {
+ background-color: oklch(20.8% 0.042 265.755);
+}
+```
+
+### Usage
+
+```tsx
+export function App() {
+ const [theme, setTheme] = useState<'light' | 'dark'>('light');
+
+ useEffect(() => {
+ document.documentElement.setAttribute('data-theme', theme);
+ }, [theme]);
+
+ return (
+