Skip to content

Commit 19c9bce

Browse files
committed
skills(cutover): move the objectui skill bundle into the root skills/ catalog, and point its readers at it (decision C, objectstack#25803)
TIER H (skills/**): a human-approved patch. Decision C (#25752 item 17d): ui/skills/objectui moves to skills/objectui, the catalog @objectstack/skills ships (sync-catalog: 92 files across 11 skills, byte-identical read-back). The catalog's own gates then judge it: - check:skill-compatibility: metadata.version is stamped by --fix (2.0 -> 18.1.0) and the compatibility line now carries the required pin, "Requires @objectstack/spec 18.x". - check:skill-identifier-liveness: its implementation index gains ui/packages, where the two identifiers the bundle cites (skipFallback, resizeConstraints) are implemented. - check:pm-skill-id-lint: the all-decimal colour `|| '#000000'` in plugin-development.md read as an issue id; the fallback is dropped (`?? ''`), which an HTML colour input already sanitises to #000000 (PM ruling 15:12Z, option a; the gate is untouched). - @objectstack/spec check:skill-examples: the bundle marks json fences with the same os:check marker, so its root reads 70 orphans; the skills root excludes skills/objectui, which ui/scripts/check-skill-examples.mjs still judges in full. objectui's readers named the bundle skills/objectui/... from the ui root. One helper, ui/scripts/skill-bundle-root.mjs, now decides the base those labels are relative to (the ui root when it holds the bundle, as fixtures do, else the monorepo root above it), so every label, baseline and fixture is unchanged: - gates: check-skills-paths, check-skill-examples, check-skill-eval-tokens, check-doc-json-fences, check-shell-escape-residue. Their output on the moved tree is byte-for-byte what it was on the base tree. - tests: the four package tests that read the guides (components x2, permissions, types), doc-version-claims (plus one KNOWN_CLAIMS row: the compatibility pin, anchored by the root gate), layered-read-4016, check-skill-examples, check-doc-json-fences, and check-governed-queue-guard (its skills-catalog row is read from the monorepo root). - markdown-test-inputs: the ledger cannot name markdown outside the ui tree, so the four single-document skill rows go (two entries left with nothing to declare are removed). Its 4a hunks are line-disjoint and scripts/ui-import/4a-ui-side.patch still applies. - content/docs/guide/agent-skills.md links the bundle's new home. Measured on 9e37acd + the series: ui scripts/__tests__ 15 failed / 5836 passed (6 of 198 files), all in the accepted pin and QUICK_REFERENCE release-sync classes (the move alone had added 21 more, in 10 files); the 18 package tests that read skills/ 299/299; ui type-check:scripts 0. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CUXv64KLMfYv3ia2sWi6te
1 parent 35eee67 commit 19c9bce

46 files changed

Lines changed: 214 additions & 69 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎packages/spec/scripts/check-skill-examples.ts‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,18 @@ const DOCS_DIR = path.resolve(REPO_ROOT, 'content/docs');
415415
const SDK_DOCS_PAGES = ['api/client-sdk.mdx', 'kernel/runtime-services/data-service.mdx'];
416416

417417
const SKILLS_DOCS_ROOTS: SourceRoot[] = [
418-
{ dir: path.resolve(REPO_ROOT, 'skills'), ext: '.md', label: 'skills', marker: '<!-- os:check -->' },
418+
{
419+
dir: path.resolve(REPO_ROOT, 'skills'),
420+
ext: '.md',
421+
label: 'skills',
422+
marker: '<!-- os:check -->',
423+
// The objectui bundle joined this catalog at the cutover (objectstack#25803)
424+
// with its own reading of the same marker: it marks `json` fences as well as
425+
// `ts`/`tsx`, and compiles them against `@object-ui/*`. Its gate is
426+
// `ui/scripts/check-skill-examples.mjs`, which still judges every marked fence
427+
// in it; read here, its 70 `json` markers are orphans by this gate's rule.
428+
exclude: [path.resolve(REPO_ROOT, 'skills/objectui')],
429+
},
419430
{
420431
dir: DOCS_DIR,
421432
ext: '.mdx',

‎scripts/check-skill-identifier-liveness.mjs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ const HERE = dirname(fileURLToPath(import.meta.url));
257257
const REPO_ROOT = join(HERE, '..');
258258

259259
const ROOTS = ['skills'];
260-
const IMPL_ROOTS = ['packages'];
260+
const IMPL_ROOTS = ['packages', 'ui/packages'];
261261
const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', 'coverage', '.turbo']);
262262
const EXTENSIONS = new Set(['.md']);
263263
const IMPL_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.json']);
File renamed without changes.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
name: objectui
33
description: Universal Server-Driven UI (SDUI) engine for building JSON-driven React interfaces with Shadcn design quality. Use for schema-driven page building, plugin development, expression bindings, data integration, testing, auth/permissions, i18n, mobile responsiveness and project setup with the `@object-ui/*` packages. Triggers on ObjectUI, SchemaRenderer, JSON UI schemas, SDUI, metadata-driven UIs, `@object-ui/*`. Do NOT use for server-side ObjectStack concerns (data modelling, API endpoints, automation, formulas, agents) — those belong to the `objectstack-*` skills.
44
license: Apache-2.0
5-
compatibility: Tracks the @objectstack/spec range each @object-ui/* package declares in its own manifest; read it there. This file states no version literal, per the doc-version-claims ratchet.
5+
compatibility: Requires @objectstack/spec 18.x; each @object-ui/* package declares its exact @objectstack/spec range in its own manifest.
66
metadata:
77
author: objectstack-ai
8-
version: "2.0"
8+
version: "18.1.0"
99
domain: ui
1010
tags: sdui, schema-renderer, json-ui, react, shadcn, tailwind, plugin, expression
1111
user-invocable: false
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)