@imfusion/web-ui 0.6.1-dev.12.ge86ac0a1 → 0.6.1-dev.15.g5d565e65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -170
- package/dist/{code-Blo48PGr.js → code-C_56u-Vk.js} +2 -2
- package/dist/{icons-wBmF0U2x.js → icons-Cy1HAosO.js} +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +31 -31
- package/dist/integrations/code-highlight.js +2 -2
- package/dist/integrations/image-display-options.js +1 -1
- package/package.json +3 -3
- package/src/llms/install-templates/AGENTS.md +15 -18
- package/src/llms/llms.gen.txt +33 -33
- package/src/llms/skills/imf-web-ui/SKILL.md +29 -39
- package/src/llms/skills/imf-web-ui-audit/SKILL.md +50 -102
- package/src/llms/skills/imf-web-ui-components/SKILL.md +47 -104
- package/src/llms/skills/imf-web-ui-conventions/SKILL.md +39 -52
- package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +1 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/agent-tooling.md +40 -62
- package/src/llms/skills/imf-web-ui-conventions/topics/assets.md +11 -12
- package/src/llms/skills/imf-web-ui-conventions/topics/authentication.md +31 -46
- package/src/llms/skills/imf-web-ui-conventions/topics/class-names.md +18 -23
- package/src/llms/skills/imf-web-ui-conventions/topics/components.md +20 -69
- package/src/llms/skills/imf-web-ui-conventions/topics/data.md +50 -146
- package/src/llms/skills/imf-web-ui-conventions/topics/docs-structure.md +17 -23
- package/src/llms/skills/imf-web-ui-conventions/topics/git.md +15 -20
- package/src/llms/skills/imf-web-ui-conventions/topics/library-boundary.md +28 -19
- package/src/llms/skills/imf-web-ui-conventions/topics/library-setup.md +20 -16
- package/src/llms/skills/imf-web-ui-conventions/topics/npm-project.md +28 -42
- package/src/llms/skills/imf-web-ui-conventions/topics/project-structure.md +28 -30
- package/src/llms/skills/imf-web-ui-conventions/topics/react.md +28 -74
- package/src/llms/skills/imf-web-ui-conventions/topics/styling.md +65 -62
- package/src/llms/skills/imf-web-ui-conventions/topics/testing.md +12 -14
- package/src/llms/skills/imf-web-ui-conventions/topics/tokens.md +9 -4
- package/src/llms/skills/imf-web-ui-conventions/topics/tooling.md +40 -68
- package/src/llms/skills/imf-web-ui-conventions/topics/typescript.md +26 -50
- package/src/llms/skills/imf-web-ui-conventions/topics/validation.md +19 -25
- package/src/llms/skills/imf-web-ui-setup/SKILL.md +43 -64
- package/src/llms/skills/imf-web-ui-update/SKILL.md +48 -114
- package/src/llms/skills/imf-web-ui-ux/SKILL.md +64 -92
- package/src/llms/skills/imf-web-ui-ux/references/forms.md +16 -36
- package/src/llms/skills/imf-web-ui-ux/references/usability-heuristics.md +14 -27
- package/src/llms/skills/imf-web-ui-ux/references/visual-design.md +22 -38
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./chunk-DmhlhrBa.js";
|
|
2
2
|
import { t } from "./meta-CySnRuVp.js";
|
|
3
|
-
import { At as n, GT as r, Kv as i, Ma as a, Na as o, Pm as s, Qt as c, Qv as l, RA as u, Wk as d, Xo as ee, aE as f, hn as p, iv as te, r as m, sn as ne, t as re, zk as ie } from "./icons-
|
|
4
|
-
import { a as ae, o as oe, r as se, t as ce } from "./code-
|
|
3
|
+
import { At as n, GT as r, Kv as i, Ma as a, Na as o, Pm as s, Qt as c, Qv as l, RA as u, Wk as d, Xo as ee, aE as f, hn as p, iv as te, r as m, sn as ne, t as re, zk as ie } from "./icons-Cy1HAosO.js";
|
|
4
|
+
import { a as ae, o as oe, r as se, t as ce } from "./code-C_56u-Vk.js";
|
|
5
5
|
import { S as le, c as ue, d as de, l as fe, m as pe, s as me, u as he } from "./tabs-CMKvMF4E.js";
|
|
6
6
|
import { Button as ge } from "@base-ui/react/button";
|
|
7
7
|
import { cva as _e, cva as h, cx as ve, cx as g } from "class-variance-authority";
|
|
@@ -102,7 +102,7 @@ var Me = {
|
|
|
102
102
|
name: "Button",
|
|
103
103
|
category: t.buttons,
|
|
104
104
|
status: "stable",
|
|
105
|
-
description: "Triggers an action
|
|
105
|
+
description: "Triggers an action such as submit, confirm, cancel, navigate, or delete. Also called a CTA or action button; variants and sizes communicate its importance.",
|
|
106
106
|
origin: "adapted",
|
|
107
107
|
upstream: {
|
|
108
108
|
name: "Base UI",
|
|
@@ -190,7 +190,7 @@ var Ie = {
|
|
|
190
190
|
name: "ChipLink",
|
|
191
191
|
category: t.buttons,
|
|
192
192
|
status: "stable",
|
|
193
|
-
description: "
|
|
193
|
+
description: "Link styled as a compact chip, with a directional icon for external references or in-app navigation. Also called a link chip or link badge.",
|
|
194
194
|
origin: "native"
|
|
195
195
|
}, Le = { root: "imf-ui-copy-button-module-root" }, Re = 1500;
|
|
196
196
|
function ze({ value: e, label: t = "Copy", copiedLabel: n = "Copied", variant: r = "secondary", size: i = "sm", className: o, ...s }) {
|
|
@@ -218,7 +218,7 @@ var Be = {
|
|
|
218
218
|
name: "CopyButton",
|
|
219
219
|
category: t.buttons,
|
|
220
220
|
status: "stable",
|
|
221
|
-
description: "
|
|
221
|
+
description: "Copies a value to the clipboard and briefly shows confirmation. Also called a copy-to-clipboard button; commonly used with Code.Block.",
|
|
222
222
|
origin: "native",
|
|
223
223
|
internalDependencies: ["Button"]
|
|
224
224
|
}, k = {
|
|
@@ -270,7 +270,7 @@ var Ke = {
|
|
|
270
270
|
name: "Checkbox",
|
|
271
271
|
category: t.inputs,
|
|
272
272
|
status: "stable",
|
|
273
|
-
description: "Binary form control for
|
|
273
|
+
description: "Binary form control for submitted choices such as terms, table rows, or list items. Also called a check box; it supports an indeterminate parent state.",
|
|
274
274
|
origin: "adapted",
|
|
275
275
|
upstream: {
|
|
276
276
|
name: "Base UI",
|
|
@@ -352,7 +352,7 @@ var st = {
|
|
|
352
352
|
name: "Field",
|
|
353
353
|
category: t.inputs,
|
|
354
354
|
status: "stable",
|
|
355
|
-
description: "Accessible field composition for a label,
|
|
355
|
+
description: "Accessible field composition for a label, control, supporting text, and validation message. Use it with Input, Checkbox, Select, and other form controls.",
|
|
356
356
|
origin: "adapted",
|
|
357
357
|
upstream: {
|
|
358
358
|
name: "Base UI",
|
|
@@ -389,7 +389,7 @@ var mt = {
|
|
|
389
389
|
name: "Fieldset",
|
|
390
390
|
category: t.inputs,
|
|
391
391
|
status: "stable",
|
|
392
|
-
description: "Semantic
|
|
392
|
+
description: "Semantic group for related form controls with a shared legend. Also called a form group; it can propagate a disabled state to the group.",
|
|
393
393
|
origin: "adapted",
|
|
394
394
|
upstream: {
|
|
395
395
|
name: "Base UI",
|
|
@@ -459,7 +459,7 @@ var _t = {
|
|
|
459
459
|
name: "Input",
|
|
460
460
|
category: t.inputs,
|
|
461
461
|
status: "stable",
|
|
462
|
-
description: "Single-line text input for form data entry. Also called a text field
|
|
462
|
+
description: "Single-line text input for form data entry. Also called a text field; it supports controlled values and Field validation state.",
|
|
463
463
|
origin: "adapted",
|
|
464
464
|
upstream: {
|
|
465
465
|
name: "Base UI",
|
|
@@ -677,7 +677,7 @@ var nn = {
|
|
|
677
677
|
name: "Select",
|
|
678
678
|
category: t.inputs,
|
|
679
679
|
status: "stable",
|
|
680
|
-
description: "
|
|
680
|
+
description: "Dropdown for choosing a value from a known list. Also called a picker; use it for a labeled, keyboard-accessible option list.",
|
|
681
681
|
origin: "adapted",
|
|
682
682
|
upstream: {
|
|
683
683
|
name: "Base UI",
|
|
@@ -689,7 +689,7 @@ var nn = {
|
|
|
689
689
|
name: "Slider",
|
|
690
690
|
category: t.inputs,
|
|
691
691
|
status: "stable",
|
|
692
|
-
description: "
|
|
692
|
+
description: "Numeric input for choosing one value or a range by dragging a thumb. Also called a range input; use it when relative magnitude matters.",
|
|
693
693
|
origin: "adapted",
|
|
694
694
|
upstream: {
|
|
695
695
|
name: "Base UI",
|
|
@@ -701,7 +701,7 @@ var nn = {
|
|
|
701
701
|
name: "Switch",
|
|
702
702
|
category: t.inputs,
|
|
703
703
|
status: "stable",
|
|
704
|
-
description: "Two-state
|
|
704
|
+
description: "Two-state control for an on/off setting that takes effect immediately. Also called a toggle; use Checkbox for a submitted choice.",
|
|
705
705
|
origin: "adapted",
|
|
706
706
|
upstream: {
|
|
707
707
|
name: "Base UI",
|
|
@@ -713,7 +713,7 @@ var nn = {
|
|
|
713
713
|
name: "Toggle",
|
|
714
714
|
category: t.inputs,
|
|
715
715
|
status: "experimental",
|
|
716
|
-
description: "
|
|
716
|
+
description: "Two-state button for a pressed or unpressed option. Compose several in ToggleGroup for a segmented control.",
|
|
717
717
|
origin: "adapted",
|
|
718
718
|
upstream: {
|
|
719
719
|
name: "Base UI",
|
|
@@ -725,7 +725,7 @@ var nn = {
|
|
|
725
725
|
name: "ToggleGroup",
|
|
726
726
|
category: t.inputs,
|
|
727
727
|
status: "experimental",
|
|
728
|
-
description: "
|
|
728
|
+
description: "Group of connected Toggle buttons that share a selection. Also called a segmented control; set `multiple` for more than one active option.",
|
|
729
729
|
origin: "adapted",
|
|
730
730
|
upstream: {
|
|
731
731
|
name: "Base UI",
|
|
@@ -815,7 +815,7 @@ var Cn = {
|
|
|
815
815
|
name: "AppShell",
|
|
816
816
|
category: t.layout,
|
|
817
817
|
status: "stable",
|
|
818
|
-
description: "Application layout shell
|
|
818
|
+
description: "Application layout shell for a header, sidebars, footer, and scrolling main area. Also called an app layout or dashboard shell; sizing is CSS-driven and sidebars can become sliding panels on small screens.",
|
|
819
819
|
origin: "native"
|
|
820
820
|
}, P = {
|
|
821
821
|
content: "imf-ui-card-module-content",
|
|
@@ -934,7 +934,7 @@ var jn = {
|
|
|
934
934
|
category: t.layout,
|
|
935
935
|
status: "stable",
|
|
936
936
|
namespace: !0,
|
|
937
|
-
description: "Surface container
|
|
937
|
+
description: "Surface container for related content on a tonal background. Also called a panel or tile; compose it from optional image, header, content, and footer parts.",
|
|
938
938
|
origin: "native"
|
|
939
939
|
}, F = {
|
|
940
940
|
backdrop: "imf-ui-drawer-module-backdrop",
|
|
@@ -1119,7 +1119,7 @@ var or = {
|
|
|
1119
1119
|
name: "Drawer",
|
|
1120
1120
|
category: t.layout,
|
|
1121
1121
|
status: "stable",
|
|
1122
|
-
description: "Off-canvas panel that slides in from a screen edge
|
|
1122
|
+
description: "Off-canvas panel that slides in from a screen edge for navigation, settings, filters, or focused tasks. Also called a sidebar, side panel, or sheet.",
|
|
1123
1123
|
origin: "adapted",
|
|
1124
1124
|
upstream: {
|
|
1125
1125
|
name: "Base UI",
|
|
@@ -1298,7 +1298,7 @@ var Mr = {
|
|
|
1298
1298
|
name: "Popover",
|
|
1299
1299
|
category: t.display,
|
|
1300
1300
|
status: "stable",
|
|
1301
|
-
description: "Floating panel anchored to a trigger
|
|
1301
|
+
description: "Floating panel anchored to a trigger for contextual content, quick forms, or actions. Also called a popup or flyout; use Tooltip for hints without interaction.",
|
|
1302
1302
|
origin: "adapted",
|
|
1303
1303
|
upstream: {
|
|
1304
1304
|
name: "Base UI",
|
|
@@ -1310,7 +1310,7 @@ var Mr = {
|
|
|
1310
1310
|
name: "Row",
|
|
1311
1311
|
category: t.layout,
|
|
1312
1312
|
status: "stable",
|
|
1313
|
-
description: "Horizontal layout primitive
|
|
1313
|
+
description: "Horizontal layout primitive for spacing, aligning, and wrapping children. Also called a horizontal stack or flex row.",
|
|
1314
1314
|
origin: "native"
|
|
1315
1315
|
}, L = {
|
|
1316
1316
|
root: "imf-ui-separator-module-root",
|
|
@@ -1339,7 +1339,7 @@ var Ir = {
|
|
|
1339
1339
|
name: "Separator",
|
|
1340
1340
|
category: t.layout,
|
|
1341
1341
|
status: "stable",
|
|
1342
|
-
description: "
|
|
1342
|
+
description: "Line that divides content horizontally or vertically. Also called a divider or rule.",
|
|
1343
1343
|
origin: "adapted",
|
|
1344
1344
|
upstream: {
|
|
1345
1345
|
name: "Base UI",
|
|
@@ -1351,7 +1351,7 @@ var Ir = {
|
|
|
1351
1351
|
name: "Stack",
|
|
1352
1352
|
category: t.layout,
|
|
1353
1353
|
status: "stable",
|
|
1354
|
-
description: "Vertical layout primitive
|
|
1354
|
+
description: "Vertical layout primitive for spacing and aligning children. Also called a vertical stack or column.",
|
|
1355
1355
|
origin: "native"
|
|
1356
1356
|
}, R = {
|
|
1357
1357
|
description: "imf-ui-callout-module-description",
|
|
@@ -1455,7 +1455,7 @@ var Kr = {
|
|
|
1455
1455
|
category: t.display,
|
|
1456
1456
|
status: "stable",
|
|
1457
1457
|
namespace: !0,
|
|
1458
|
-
description: "
|
|
1458
|
+
description: "Persistent, in-place status message for information, success, warnings, and errors. Also called an inline alert or notice; it is not a transient toast or modal dialog.",
|
|
1459
1459
|
origin: "native"
|
|
1460
1460
|
};
|
|
1461
1461
|
//#endregion
|
|
@@ -1479,7 +1479,7 @@ var Jr = {
|
|
|
1479
1479
|
name: "Chip",
|
|
1480
1480
|
category: t.display,
|
|
1481
1481
|
status: "stable",
|
|
1482
|
-
description: "Compact
|
|
1482
|
+
description: "Compact label for tags, status, categories, counts, and metadata. Also called a badge or tag; its color and appearance are independent choices.",
|
|
1483
1483
|
origin: "native"
|
|
1484
1484
|
}, z = {
|
|
1485
1485
|
iconClosed: "imf-ui-collapsible-module-iconClosed",
|
|
@@ -1552,7 +1552,7 @@ var ni = {
|
|
|
1552
1552
|
name: "Collapsible",
|
|
1553
1553
|
category: t.display,
|
|
1554
1554
|
status: "stable",
|
|
1555
|
-
description: "
|
|
1555
|
+
description: "Show-and-hide region for secondary content such as FAQs, settings, or details. Also called a disclosure or expand/collapse.",
|
|
1556
1556
|
origin: "adapted",
|
|
1557
1557
|
upstream: {
|
|
1558
1558
|
name: "Base UI",
|
|
@@ -1622,7 +1622,7 @@ var ai = {
|
|
|
1622
1622
|
name: "Logo",
|
|
1623
1623
|
category: t.display,
|
|
1624
1624
|
status: "stable",
|
|
1625
|
-
description: "
|
|
1625
|
+
description: "Renders a logo from a URL or inline React element with consistent sizing. Also called a wordmark or brand mark.",
|
|
1626
1626
|
origin: "native"
|
|
1627
1627
|
};
|
|
1628
1628
|
//#endregion
|
|
@@ -2046,7 +2046,7 @@ var ea = /* @__PURE__ */ e({
|
|
|
2046
2046
|
category: t.display,
|
|
2047
2047
|
status: "experimental",
|
|
2048
2048
|
namespace: !0,
|
|
2049
|
-
description: "Navigation menu
|
|
2049
|
+
description: "Navigation menu with horizontal or vertical triggers and anchored flyout panels. Also called a menu bar or mega menu; it supports links, rich cards, and nested navigation.",
|
|
2050
2050
|
origin: "adapted",
|
|
2051
2051
|
upstream: {
|
|
2052
2052
|
name: "Base UI",
|
|
@@ -2159,7 +2159,7 @@ var fa = {
|
|
|
2159
2159
|
name: "Spinner",
|
|
2160
2160
|
category: t.display,
|
|
2161
2161
|
status: "stable",
|
|
2162
|
-
description: "
|
|
2162
|
+
description: "Indeterminate loading indicator. Also called a loader or progress spinner.",
|
|
2163
2163
|
origin: "native"
|
|
2164
2164
|
}, q = {
|
|
2165
2165
|
body: "imf-ui-table-module-body",
|
|
@@ -2273,14 +2273,14 @@ var ja = {
|
|
|
2273
2273
|
name: "Table",
|
|
2274
2274
|
category: t.display,
|
|
2275
2275
|
status: "stable",
|
|
2276
|
-
description: "
|
|
2276
|
+
description: "Presentational table parts for static tabular data. Pair them with a headless table library for sorting, pagination, or selection.",
|
|
2277
2277
|
origin: "native"
|
|
2278
2278
|
}, Ma = {
|
|
2279
2279
|
name: "Tabs",
|
|
2280
2280
|
category: t.display,
|
|
2281
2281
|
status: "stable",
|
|
2282
2282
|
namespace: !0,
|
|
2283
|
-
description: "
|
|
2283
|
+
description: "Switches between related panels within one view. Also called a tab strip or tab bar; it supports horizontal and vertical layouts.",
|
|
2284
2284
|
origin: "adapted",
|
|
2285
2285
|
upstream: {
|
|
2286
2286
|
name: "Base UI",
|
|
@@ -2570,7 +2570,7 @@ var xo = {
|
|
|
2570
2570
|
name: "Tooltip",
|
|
2571
2571
|
category: t.display,
|
|
2572
2572
|
status: "stable",
|
|
2573
|
-
description: "Hover- or focus-triggered
|
|
2573
|
+
description: "Hover- or focus-triggered label for brief help about a control or term. Also called a hint; use Popover for a panel with actions.",
|
|
2574
2574
|
origin: "adapted",
|
|
2575
2575
|
upstream: {
|
|
2576
2576
|
name: "Base UI",
|
|
@@ -2817,7 +2817,7 @@ var Lo = {
|
|
|
2817
2817
|
category: t.display,
|
|
2818
2818
|
status: "stable",
|
|
2819
2819
|
namespace: !0,
|
|
2820
|
-
description: "
|
|
2820
|
+
description: "Semantic text primitives for headings, paragraphs, lists, quotes, links, and inline code. The namespace uses native HTML elements and token-based text roles.",
|
|
2821
2821
|
origin: "native"
|
|
2822
2822
|
}, Ro = xe({
|
|
2823
2823
|
color: "currentColor",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "../chunk-DmhlhrBa.js";
|
|
2
2
|
import { t } from "../meta-CySnRuVp.js";
|
|
3
|
-
import { i as n, n as r, r as i } from "../code-
|
|
3
|
+
import { i as n, n as r, r as i } from "../code-C_56u-Vk.js";
|
|
4
4
|
import { jsx as a } from "react/jsx-runtime";
|
|
5
5
|
import { cloneElement as o, useMemo as s } from "react";
|
|
6
6
|
import { createHighlighter as c, defineLanguage as l, renderNodesToHtml as u, renderTokens as d } from "@tanstack/highlight/core";
|
|
@@ -222,7 +222,7 @@ var R = {
|
|
|
222
222
|
category: t.display,
|
|
223
223
|
status: "experimental",
|
|
224
224
|
namespace: !0,
|
|
225
|
-
description: "Syntax-highlighted
|
|
225
|
+
description: "Syntax-highlighted Code parts powered by TanStack Highlight. Import from the integration entry and install the optional @tanstack/highlight peer.",
|
|
226
226
|
origin: "adapted",
|
|
227
227
|
internalDependencies: ["Code"],
|
|
228
228
|
upstream: {
|
|
@@ -297,7 +297,7 @@ var U = {
|
|
|
297
297
|
name: "ImageDisplayOptions",
|
|
298
298
|
category: e.inputs,
|
|
299
299
|
status: "experimental",
|
|
300
|
-
description: "
|
|
300
|
+
description: "Panel and toolbar controls for an image dataset's display options, including window, level, gamma, and invert settings.",
|
|
301
301
|
origin: "adapted",
|
|
302
302
|
internalDependencies: [
|
|
303
303
|
"Tabs",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imfusion/web-ui",
|
|
3
|
-
"version": "0.6.1-dev.
|
|
3
|
+
"version": "0.6.1-dev.15.g5d565e65",
|
|
4
4
|
"description": "The official Web UI component library for ImFusion web apps",
|
|
5
5
|
"author": "ImFusion GmbH",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"git:config": "git config core.hooksPath .githooks && git config pull.rebase true && git config merge.ff only"
|
|
93
93
|
},
|
|
94
94
|
"peerDependencies": {
|
|
95
|
-
"@imfusion/sdk": "^1.0.0",
|
|
96
|
-
"@imfusion/sdk-react": "^1.0.0",
|
|
95
|
+
"@imfusion/sdk": "^1.0.0 || >=1.1.1-dev.0 <1.1.1",
|
|
96
|
+
"@imfusion/sdk-react": "^1.0.0 || >=1.1.1-dev.0 <1.1.1",
|
|
97
97
|
"@tanstack/highlight": "^0.0.9",
|
|
98
98
|
"react": "^19.0.0",
|
|
99
99
|
"react-dom": "^19.0.0"
|
|
@@ -1,34 +1,31 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent instructions
|
|
2
2
|
|
|
3
|
-
<Keep this file
|
|
4
|
-
|
|
5
|
-
themselves.>
|
|
3
|
+
<Keep this file short. Include only rules that prevent a costly mistake. Point to the repository's own docs for everything
|
|
4
|
+
else.>
|
|
6
5
|
|
|
7
|
-
<One paragraph
|
|
6
|
+
<One paragraph describing the app, its package, and its stack.>
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Setup and commands: [`README.md`](./README.md) and [`package.json`](./package.json). Read the package scripts before running
|
|
9
|
+
or suggesting a command.
|
|
11
10
|
|
|
12
|
-
## Read before
|
|
11
|
+
## Read before writing
|
|
13
12
|
|
|
14
|
-
<
|
|
13
|
+
<Add one pointer for each repository-specific document.>
|
|
15
14
|
|
|
16
|
-
- [`docs/<topic>.md`](./docs/<topic>.md) — <what it covers
|
|
15
|
+
- [`docs/<topic>.md`](./docs/<topic>.md) — <what it covers and when to read it>.
|
|
17
16
|
|
|
18
|
-
[`docs/index.md`](./docs/index.md)
|
|
17
|
+
[`docs/index.md`](./docs/index.md) lists the documents.
|
|
19
18
|
|
|
20
19
|
## Working here
|
|
21
20
|
|
|
22
|
-
<The fenced block below
|
|
23
|
-
is refreshed on every skills install. Everything else in the file is scaffolded once by the setup skill and then owned by the
|
|
24
|
-
repo.>
|
|
21
|
+
<The installer owns only the fenced block below. It refreshes that block on every install; the rest belongs to the project.>
|
|
25
22
|
|
|
26
23
|
<!-- imf-web-ui:begin — managed by `npx web-ui-install`; edits inside the fence are overwritten -->
|
|
27
24
|
|
|
28
|
-
`.agents/skills/imf-web-ui-*` is vendored from `@imfusion/web-ui` and resynced with `npx web-ui-install`.
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
`.agents/skills/imf-web-ui-*` is vendored from `@imfusion/web-ui` and resynced with `npx web-ui-install`. Do not edit the
|
|
26
|
+
vendored copy or put project-specific conventions there. Load the matching skill before changing UI, styles, data, tests, or
|
|
27
|
+
docs.
|
|
31
28
|
|
|
32
29
|
<!-- imf-web-ui:end -->
|
|
33
30
|
|
|
34
|
-
<
|
|
31
|
+
<Add project-specific rules here: generated files, API lookup tools, and paths the agent must not touch.>
|