Repository navigation
docs(skills): drop the four retired CLI rows from project-setup.md's command table (objectui#11511) - #11585
Conversation
…command table (objectui#11511) The CLI table in `skills/objectui/guides/project-setup.md` taught `objectui studio`, `objectui lint`, `objectui test` and `objectui create plugin`, four commands the CLI retired under objectui#11500 and now refuses as unknown. The four rows are dropped, the way PR #11507 dropped `add`, and one prose line after the table names `npm create @object-ui/plugin NAME` as the initializer that scaffolds a plugin package. The `objectui generate` row keeps its `plugin` type: `generate.ts` still dispatches it. An empty-frontmatter changeset declares the docs-only change. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Read-only shape: the diff against the merge base 83e3f83, card #11511 with every comment, and this head's check-runs; nothing built or run locally. Reviewed by the dispatch seat in seat (served tier equals the constant's value, read from ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
维护者速读(终稿)— PR #11585(#11511)· skills seat 1 · 2026-10-04T01:12Z改了什么: 为什么改: 这四个命令已随 objectui#11500(PR #11508)退役,CLI 现在把它们当未知命令拒绝、退出 1;指南是发布给使用者的 风险与代价(含回滚): 只动两个 markdown 文件,不动代码、不发版; 席位意见: 建议批准。表里剩下的命令与 你要做的(一个动作): 在 PR #11585 上给一次 APPROVED review;批准后由席位清标、ready、挂 auto-merge 入队。 |
Contract reviewServed-tier: Re-recorded on the base-merge head 1552308 (parents: the reviewed head 5936490 and objectui main; the three-dot diff against the new merge base is byte-identical to the one reviewed under record 5975123562 — the same two files, the same hunks). Read-only shape: the diff against the merge base 83e3f83, card #11511 with every comment, and this head's check-runs; nothing built or run locally. Reviewed by the dispatch seat in seat (served tier equals the constant's value, read from ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #11511
Clause-②: no
What changed
The CLI table under the
## CLI commandsheading ofskills/objectui/guides/project-setup.mddrops four rows. Their commands were retired under objectui#11500 (PR #11508, landed as37268aae9, an ancestor of this branch's base), and the built CLI now refuses each as an unknown command, exits 1 and writes nothing, pinned by thecli-bin.test.tsdescribe block named "the retired create, lint, test and studio commands are refused". The dropped rows, quoted:| \objectui studio` | Visual UI editor |`| \objectui lint` | Lint generated app code (ESLint) |`| \objectui test` | Run app tests (Vitest) |`| \objectui create plugin` | Scaffold a new plugin |`One prose line follows the table, saying what
content/docs/utilities/cli.mdxalready teaches: "A plugin package is scaffolded by its own initializer,npm create @object-ui/plugin NAME, not by the CLI." (NAMEis an uppercase placeholder word on purpose: GitHub strips tag-shaped fragments from a body, so no angle-bracket placeholder is written anywhere in this PR.)lint/testget no replacement row: the project's own ESLint / Vitest are not this CLI's business, and the card asks for none.studiohas no published replacement..changeset/11511-project-setup-retired-cli-rows.md, an empty-frontmatter changeset, declares the docs-only change — this repository's one-declaration form; no package is released.Readings
Grep pin (the card's own pin, carried in this PR). The command, in the form printed here:
git grep "objectui studio\|objectui lint\|objectui test\|create plugin" origin/main -- skills/objectui/83e3f83: 4 hits, every one of them in the CLI table ofproject-setup.md, and every one of them a row quoted above. No other guide underskills/objectui/names any of the four.5936490: 0 hits (git grepexits 1).The
objectui generaterow stays.packages/cli/src/cli.tsstill declares.command('generate')withpluginamong its argument's types, andpackages/cli/src/commands/generate.tsstill dispatchescase 'plugin'togeneratePlugin, so the row's(\object`, `page`, `plugin`)is true on the base and is not touched. The commands the table now lists —init,dev(withserve, whichcli.tsdescribes as its alias),build,start,validate,check,generate,doctor,analyze— are exactly the.command(...)setcli.ts` declares.Governed surface.
node scripts/check-governed-queue-guard.mjs --test skills/objectui/guides/project-setup.md .changeset/11511-project-setup-retired-cli-rows.mdanswers⛔ GOVERNED — 1 of 2 path(s) are on a governed surface: skills/** x1 — the published skills catalog, exit 3. This PR stays a draft until an APPROVED review by an authorized approver (os-zhuang/hotlong) is on it; the claiming seat lands it afterwards. Not flipped ready, no auto-merge armed.Line readings (a
skills/**diff owes two).skills/objectui/guides/project-setup.md, whole file: 350 lines before, 348 after (net −2: four rows dropped, one prose line plus its separating blank line added)..mdunderskills/objectui/(16 files): 4813 lines before, 4811 after.skills/objectui/SKILL.mdalone: 142 before and after, untouched.pnpm check:skill-eval-tokensis the eval-side oracle and is green below.Gates run locally (all on commit
5936490)pnpm check:skills-pathsOK (89/90 stated path(s) resolve across 20 guide file(s); 1 baselined),skills/ — 29/29 resolve across 16 file(s)pnpm check:skill-eval-tokensRed under the chosen oracle: 0 (0 beyond the baseline),Every must_contain token is taught by its own skill bundle.pnpm exec turbo run build FILTER_ARGS --concurrency=2,FILTER_ARGSbeing the 12--filter=wordsnode scripts/check-skill-examples.mjs --build-filterprints, underos-verify-lock.shTasks: 29 successful, 29 total, 5m02s of shared-box secondsnode scripts/check-skill-examples.mjs --self-test60 cases passnode scripts/check-skill-examples.mjsSemantic phase: 18 of 18 ts fence(s) judged, 0 failed.,JSON phase: 70 fence(s) parsed, 0 failed.,Every marked skill example holds up against the built types.node scripts/check-new-cross-file-line-citations.mjs --base 83e3f83VERDICT new-cross-file-line-citations: 0 new citation(s)node scripts/check-changeset-presence.mjsNo source or published contract of a released package changed in this range, so no changeset is owed.(one is added anyway, as the declaration form)pnpm changeset:checkpnpm check:changeset-claimsNo pending changeset names a file this change touches.pnpm check:pending-changeset-literalsNo test source names a pending changeset.pnpm exec vitest run scripts/__tests__/doc-version-claims.test.ts scripts/__tests__/check-skills-paths.test.ts scripts/__tests__/check-skill-eval-tokens.test.ts scripts/__tests__/check-shell-escape-residue.test.ts --maxWorkers=2, from the repository root, under the lockTest Files 4 passed (4),Tests 145 passed (145)grep -naPwith the C0, DEL class)Declared narrowings.
pnpm testis narrowed from the full suite to the four files above.doc-version-claims.test.tsis the one test that namesproject-setup.md(git grep -l "project-setup" -- '**/__tests__/**' '**/*.test.*'answers only it); the other three are the scripts tests that readskills/objectui. The full suite is CI's run.pnpm lintis narrowed to a measured zero, three pieces: ① the population is read from eslint's own config —ESLint.calculateConfigForFilereturns undefined andisPathIgnoredreturns true for both diff paths; ② the file count —lintFilesover the two diff paths returns 2 results, bothFile ignored because no matching configuration was supplied, 0 errors, so 0 of the 2 diff paths are in the lint population; ③ invariance — the diff touches no eslint config and no file eslint matches, so no untouched file's verdict can move. The tree-widepnpm lintis CI's run.pnpm type-checkis not owed: the diff is two markdown files, no TypeScript file and no manifest.pnpm installran aspnpm install --config.engine-strict=false, because the container's Node v22.22.0 is below jsdom's engine floor.维护者速读(草稿)
改了什么
skills/objectui/guides/project-setup.md的 CLI 命令表删掉四行:objectui studio、objectui lint、objectui test、objectui create plugin。这四个命令已随 objectui#11500(PR #11508)退役,CLI 现在把它们当未知命令拒绝、退出 1、什么都不写。表后加一句:插件包用它自己的初始化器npm create @object-ui/plugin NAME搭,不经 CLI。另加一个空 frontmatter 的 changeset,声明「纯文档、不发版」。为什么改
这份指南是发布给使用者的
objectuiskill 的一部分,AI agent 搭项目时照它执行。表里教的命令 CLI 已经不认,照着做就是撞墙;其中create plugin有正确路径(npm create @object-ui/plugin),指南却指向了退役命令。NORTH-STAR 第 4 条把这类「教错」算作产品缺陷。风险与代价(含回滚)
只动两个 markdown 文件,不动代码、不发版,本地门禁全绿。
objectui generate行核对过仍为真(generate.ts仍派发plugin),没动;四个命令名在skills/objectui/**里 grep 已归零。回滚即 revert 这一个 squash commit。受管面(skills/**)⇒ 本 PR 停在 draft,等os-zhuang/hotlong的一条 APPROVED review,之后由认领席落地。席位意见
(留空)
你要做的
读一遍 diff(两个文件、净 −2 行),认可就在本 PR 上留一条 APPROVED review;翻 ready、入队由席位处理。不认可就在 PR 上写明要改的那句。
Acceptance notes
origin/mainat0a53c67; by the time this branch was cutorigin/mainwas83e3f83(three unrelated landings, none touching this file), so the branch is based on83e3f83and every reading above is against it.session_01CB6W87z22K2yjUCDyVrJRk(the PM seat's; this PR was implemented by its dispatched dev in subagent mode, so the branch is the identity).Generated by Claude Code