Skip to content

Commit f22ed22

Browse files
os-litantclaude
andauthored
docs(skills): correct two false claims and add three routing bullets in skills/README.md (#14795)
Settle `skills/README.md`'s CEL conventions and cross-skill routing list against source. 1. `:87` — "Legacy `OLD` / `NEW` evaluate to `null` since M9.5" was false in both halves. `M9.5` is anchored nowhere in the repo, and `OLD` / `NEW` are not values that evaluate to `null`: they are undeclared identifiers. `SCOPE_ROOTS` (packages/formula/src/cel-engine.ts:95) is the published closed set of record-scope roots and contains neither, so `firstUndeclaredReference` (:186) reports them as bare undeclared references — the class `@objectstack/lint` raises as an error, not a silent null. Replaced with the true clause plus the migration objectstack- formula's own table prescribes (`OLD.x` -> `previous.x`, `NEW.x` -> `record.x`). 2. `:105` — "AI tool params" is not a CEL site. `packages/spec/src/ai/tool.zod.ts` carries no expression field of any kind, and the AI domain's only expression site is `model-registry.zod.ts:121-122`, which is `TemplateExpressionInputSchema` — the `template` dialect (`{{var}}` interpolation), not CEL. Dropped the item; no true replacement exists, because the AI domain has no CEL predicate. 3. `:94-110` — three routing bullets added for measured load-failure modes: labels to objectstack-i18n, protocol-major moves to objectstack-upgrade, and the consuming UI to the objectui skills catalog. Items 1-2 net exactly zero bytes; item 3 costs 75 tokens, at the size ruling. The generated region and the anatomy tree are untouched. Claude-Session: https://claude.ai/code/session_01LraLgQVGq8egUwfYZpbYt1 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 521eaf9 commit f22ed22

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

skills/README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ carries `SKILL.md` alone — `gen:skill-refs` only visits skills listed in its
8484
- **Short object names** (`account`, `task`); no `namespace`, no `tableName`.
8585
- **CEL for all expressions** — predicates, conditions, schedules. Use the
8686
`F\`\``, `P\`\``, `cel\`\``, `cron\`\``, `tmpl\`\`` tagged templates from
87-
`@objectstack/spec`. Legacy `OLD` / `NEW` evaluate to `null` since M9.5.
87+
`@objectstack/spec`. Legacy `OLD` / `NEW` are not CEL — use
88+
`previous.` / `record.`.
8889
- **v5.0 vocabulary** — runtime workspace is `environment`, not `project`.
8990
- **Singular metadata type names** (`agent`, `view`, `flow`, …); REST resource
9091
collections are plural (`/api/v1/ai/agents`).
@@ -102,10 +103,14 @@ A few common decision points where the right skill isn't obvious:
102103
**automation** (screen flows). Static record / list / dashboard surfaces are
103104
**ui**.
104105
- **Any CEL expression** — load **objectstack-formula** alongside the host
105-
skill (data validations, automation guards, UI visibility, AI tool params).
106+
skill (data validations, automation guards, UI visibility).
106107
- **Kernel / plugin events vs. data lifecycle**`PluginContext` lifecycle and
107108
`EventBus` belong to **objectstack-platform**; record-level hooks belong to
108109
**objectstack-data**.
110+
- **Labels vs. bundles** — a `label` you want translated is **objectstack-i18n**.
111+
- **Upgrade vs. platform** — a protocol-major move is **objectstack-upgrade**.
112+
- **Rendering this metadata** — the consuming UI is
113+
[objectui `skills/objectui/`](https://github.com/objectstack-ai/objectui).
109114

110115
---
111116

0 commit comments

Comments
 (0)