Skip to content

docs(skills): drop the four retired CLI rows from project-setup.md's command table (objectui#11511) - #11585

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-11511-project-setup-retired-cli-rows
Oct 4, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-11511-project-setup-retired-cli-rows

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #11511
Clause-②: no

What changed

The CLI table under the ## CLI commands heading of skills/objectui/guides/project-setup.md drops four rows. Their commands were retired under objectui#11500 (PR #11508, landed as 37268aae9, 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 the cli-bin.test.ts describe 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.mdx already teaches: "A plugin package is scaffolded by its own initializer, npm create @object-ui/plugin NAME, not by the CLI." (NAME is 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 / test get no replacement row: the project's own ESLint / Vitest are not this CLI's business, and the card asks for none. studio has 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/

  • On the base 83e3f83: 4 hits, every one of them in the CLI table of project-setup.md, and every one of them a row quoted above. No other guide under skills/objectui/ names any of the four.
  • On this branch's head 5936490: 0 hits (git grep exits 1).

The objectui generate row stays. packages/cli/src/cli.ts still declares .command('generate') with plugin among its argument's types, and packages/cli/src/commands/generate.ts still dispatches case 'plugin' to generatePlugin, 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, which cli.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.md answers ⛔ 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).
  • Bundle, every .md under skills/objectui/ (16 files): 4813 lines before, 4811 after. skills/objectui/SKILL.md alone: 142 before and after, untouched.
  • Tokens: this repository declares no skills token ratchet; pnpm check:skill-eval-tokens is the eval-side oracle and is green below.

Gates run locally (all on commit 5936490)

Gate Verdict
pnpm check:skills-paths exit 0 — OK (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-tokens exit 0 — Red 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_ARGS being the 12 --filter= words node scripts/check-skill-examples.mjs --build-filter prints, under os-verify-lock.sh exit 0 — Tasks: 29 successful, 29 total, 5m02s of shared-box seconds
node scripts/check-skill-examples.mjs --self-test exit 0 — 60 cases pass
node scripts/check-skill-examples.mjs exit 0 — Semantic 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 83e3f83 exit 0 — VERDICT new-cross-file-line-citations: 0 new citation(s)
node scripts/check-changeset-presence.mjs exit 0 — No 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:check exit 0 — fixed group and no-major both green
pnpm check:changeset-claims exit 0 — No pending changeset names a file this change touches.
pnpm check:pending-changeset-literals exit 0 — No 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 lock exit 0 — Test Files 4 passed (4), Tests 145 passed (145)
control-byte scan over both touched files (grep -naP with the C0, DEL class) no hits

Declared narrowings.

  • pnpm test is narrowed from the full suite to the four files above. doc-version-claims.test.ts is the one test that names project-setup.md (git grep -l "project-setup" -- '**/__tests__/**' '**/*.test.*' answers only it); the other three are the scripts tests that read skills/objectui. The full suite is CI's run.
  • pnpm lint is narrowed to a measured zero, three pieces: ① the population is read from eslint's own config — ESLint.calculateConfigForFile returns undefined and isPathIgnored returns true for both diff paths; ② the file count — lintFiles over the two diff paths returns 2 results, both File 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-wide pnpm lint is CI's run.
  • pnpm type-check is not owed: the diff is two markdown files, no TypeScript file and no manifest.
  • Deviation: pnpm install ran as pnpm 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,声明「纯文档、不发版」。

为什么改

这份指南是发布给使用者的 objectui skill 的一部分,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

  • Nothing outside the card's file surface was changed: the one table, plus the changeset this repository requires. The grep pin found no second site.
  • The claim comment on the card read origin/main at 0a53c67; by the time this branch was cut origin/main was 83e3f83 (three unrelated landings, none touching this file), so the branch is based on 83e3f83 and every reading above is against it.
  • Session: 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

…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>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 5936490c6cdfa8614776db599999b5ab5366c00c
Local-runs: none

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 get_session). Review face: skills/**, governed rule text (Tier H on this board). Readings taken at 2026-10-04T00:47Z.

① Derived judgments

  • Accept set: unchanged. One published guide (skills/objectui/guides/project-setup.md +2/−4) and one empty-frontmatter changeset; no schema, export, route or runtime behaviour moves. Clause-②: no holds; the text narrows what an author is told exists (four refused commands removed), never widens.
  • The four dropped rows name exactly the commands PR fix(cli): retire create, lint, test and studio, commands that could only fail; correct four residues to what the commands do (objectui#11500) #11508 (objectui#11500, 37268aa, an ancestor of the base) retired and packages/cli/src/__tests__/cli-bin.test.ts pins as refused; the table's remaining rows are the .command(...) set packages/cli/src/cli.ts declares, and the generate row's plugin stays true (packages/cli/src/commands/generate.ts:24 case 'plugin', read by this seat on origin/main). The one added sentence states what content/docs/utilities/cli.mdx:267 already teaches (npm create @object-ui/plugin).
  • Grep pin, this seat's own: the four command names over skills/objectui/ at the head: 0 files (control objectui init in the same file: 1 hit). No second site.

② Semver level

  • No package releases from this diff; the empty-frontmatter changeset is this repository's declaration form for a docs-only change, and the Changeset Declaration check is green on this head. No ADR-0087 disposition applies. ⛔ No skip-changeset label on this board (a phantom), and none was applied.

③ Boundary flags

  • Dev flags: open_questions empty; out_of_scope_findings empty; deviations are the declared narrowings (pnpm test to the four scripts tests that read this file; tree-wide pnpm lint to a measured zero with the three-piece proof; engine-strict=false install) — accepted, CI owns the full runs.
  • Line readings, this seat's own off the head blobs: project-setup.md 350 → 348 (net −2, the budget was ≤ −2); every .md under skills/objectui/ 4811 lines over 16 files at the head.
  • Check-runs on this head at this write: Lint, Type Check, Build & E2E, Build Docs, Changeset Declaration, Governed Surface Queue Guard, Skill Guide Path Check, Skill Eval Token Check, Line Citation Gate success; the eight Test (shard N/8), Skill Example Check, Spec Main Shape Gate, Doc Snippet Type Check, README Export Check in progress — the enqueue gate reads them at landing, not this record. mergeable_state reads behind (origin/main moved to f1c9379 with nothing under skills/objectui/guides/); behind is not an enqueue veto.
  • Cross-lane: the open PRs docs(skills): type three marked fences' schema as SchemaRendererProps['schema'] (objectui#11543) #11558 / docs(skills): the page-builder guide's object-form example names its fields; a per-form override goes on a section entry (objectui#11550) #11561 of other lanes hold other guides; no overlap.

Implemented-by: claude/issue-11511-project-setup-retired-cli-rows
Reviewed-by: session_01CB6W87z22K2yjUCDyVrJRk

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读(终稿)— PR #11585(#11511)· skills seat 1 · 2026-10-04T01:12Z

改了什么: skills/objectui/guides/project-setup.md 的 CLI 命令表删掉四行:objectui studio、objectui lint、objectui test、objectui create plugin;表后加一句「插件包由它自己的初始化器 npm create @object-ui/plugin NAME 搭,不经 CLI」。附一个空 frontmatter 的 changeset(本仓纯文档改动的声明形态)。净 −2 行。

为什么改: 这四个命令已随 objectui#11500(PR #11508)退役,CLI 现在把它们当未知命令拒绝、退出 1;指南是发布给使用者的 objectui skill 的一部分,AI 照它执行就是撞墙,其中 create plugin 本有正确路径。北极星第 4 条把「教错一句」算产品缺陷。

风险与代价(含回滚): 只动两个 markdown 文件,不动代码、不发版;objectui generate 行核过仍为真(generate.ts 仍派发 plugin),未动;四个命令名在 skills/objectui/** 里 grep 归零(对照词仍命中)。本地与 CI 门禁全绿(41 项),席内契约复核 PASS(5975123562)。回滚即 revert 单个 commit。

席位意见: 建议批准。表里剩下的命令与 packages/cli/src/cli.ts 声明的 .command(...) 集一一对应;那一句散文与 content/docs/utilities/cli.mdx 既有写法一致。

你要做的(一个动作): 在 PR #11585 上给一次 APPROVED review;批准后由席位清标、ready、挂 auto-merge 入队。

@os-zhuang
os-zhuang marked this pull request as ready for review October 4, 2026 01:23
@os-zhuang
os-zhuang enabled auto-merge October 4, 2026 01:23
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 15523084c8f8cfb6a5a5f0cf05eb316878f2295c
Local-runs: none

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 get_session). Review face: skills/**, governed rule text (Tier H on this board). Readings taken at 2026-10-04T01:24Z.

① Derived judgments

  • Accept set: unchanged. One published guide (skills/objectui/guides/project-setup.md +2/−4) and one empty-frontmatter changeset; no schema, export, route or runtime behaviour moves. Clause-②: no holds; the text narrows what an author is told exists (four refused commands removed), never widens.
  • The four dropped rows name exactly the commands PR fix(cli): retire create, lint, test and studio, commands that could only fail; correct four residues to what the commands do (objectui#11500) #11508 (objectui#11500, 37268aa, an ancestor of the base) retired and packages/cli/src/__tests__/cli-bin.test.ts pins as refused; the table's remaining rows are the .command(...) set packages/cli/src/cli.ts declares, and the generate row's plugin stays true (packages/cli/src/commands/generate.ts:24 case 'plugin', read by this seat on origin/main). The one added sentence states what content/docs/utilities/cli.mdx:267 already teaches (npm create @object-ui/plugin).
  • Grep pin, this seat's own: the four command names over skills/objectui/ at the head: 0 files (control objectui init in the same file: 1 hit). No second site.

② Semver level

  • No package releases from this diff; the empty-frontmatter changeset is this repository's declaration form for a docs-only change, and the Changeset Declaration check is green on this head. No ADR-0087 disposition applies. ⛔ No skip-changeset label on this board (a phantom), and none was applied.

③ Boundary flags

  • Dev flags: open_questions empty; out_of_scope_findings empty; deviations are the declared narrowings (pnpm test to the four scripts tests that read this file; tree-wide pnpm lint to a measured zero with the three-piece proof; engine-strict=false install) — accepted, CI owns the full runs.
  • Line readings, this seat's own off the head blobs: project-setup.md 350 → 348 (net −2, the budget was ≤ −2); every .md under skills/objectui/ 4811 lines over 16 files at the head.
  • Check-runs on this head at this write: Lint, Type Check, Build & E2E, Build Docs, Changeset Declaration, Governed Surface Queue Guard, Skill Guide Path Check, Skill Eval Token Check, Line Citation Gate success; the eight Test (shard N/8), Skill Example Check, Spec Main Shape Gate, Doc Snippet Type Check, README Export Check in progress — the enqueue gate reads them at landing, not this record. mergeable_state reads behind (origin/main moved to f1c9379 with nothing under skills/objectui/guides/); behind is not an enqueue veto.
  • Cross-lane: the open PRs docs(skills): type three marked fences' schema as SchemaRendererProps['schema'] (objectui#11543) #11558 / docs(skills): the page-builder guide's object-form example names its fields; a per-form override goes on a section entry (objectui#11550) #11561 of other lanes hold other guides; no overlap.

Implemented-by: claude/issue-11511-project-setup-retired-cli-rows
Reviewed-by: session_01CB6W87z22K2yjUCDyVrJRk

VERDICT: PASS

@os-zhuang
os-zhuang added this pull request to the merge queue Oct 4, 2026
Merged via the queue into main with commit 0c012a7 Oct 4, 2026
42 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-11511-project-setup-retired-cli-rows branch October 4, 2026 01:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

skills: project-setup.md's CLI table still lists objectui studio, lint, test and create plugin, retired by objectui#11500

3 participants