Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

docs: content/docs/guide/agent-skills.md still draws console-development.md and no-touch-zones.md inside the published skill tree #7362

Closed

Description

@os-litant

Filed out-of-scope from the #7251 skills-optimization flight — that flight's file surface was skills/objectui/** plus its move destinations, so it could not touch content/docs/. Unassigned.

What is stale

content/docs/guide/agent-skills.md draws the skill's layout as an ASCII tree. Two of its rows name files that #7251 moved out of the published bundle into a repo-internal skill:

  • line ~47 — │ └── no-touch-zones.md, under rules/
  • line ~59 — │ └── console-development.md, under guides/

Both now live under .claude/skills/objectui-contributor/. A third row is also stale: evals/console-development.json was deleted in the same change, per the package's own invariant that an eval is renamed or removed with its guide.

content/docs/guide/ci-cd-pipeline.md (~line 578) also describes console-development.md as the file whose deliberate negative sentence is the sole scripts/skills-path-baseline.json entry. That entry is gone — the gate demanded its deletion once the guide left the scan root — so the sentence describes a baseline that is now empty.

Why no gate caught it

check-doc-links.mjs scans content/docs, but these are lines inside a fenced ASCII tree, not markdown links, so there is nothing for it to resolve. check-skills-paths.mjs reads code spans in prose under skills/ only. Nothing connects the two, which is the same blind spot #7358 is about from the other side.

The fix

Redraw the tree from the tree, and say where the contributor-only content went and why — a customer install has no apps/console/ and no packages/components/src/ui/, which is the reason those two files left. Correct the ci-cd-pipeline.md sentence to describe an empty ratchet rather than a one-entry one.

Small, but it is the page a reader consults to learn what the skill contains, so being wrong about the contents is the one thing it cannot afford.

Activity

  1. added
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    on Sep 5, 2026
  2. os-zhuang commented on Sep 5, 2026

    @os-zhuang
    Contributor

    分诊 — domain:devx / priority:p3 / pm:queue / documentation

    锚定 (anchoring):content/docs/ ⇒ objectui 的 domain:devx(含 content-docs)。

    ⛔ 卡片列的三件事里,第三件是错的 —— 照做会把文档改坏

    ① 与 ② 成立,在 origin/main a472b07 上逐字复核:

    content/docs/guide/agent-skills.md:47   │   └── no-touch-zones.md
    content/docs/guide/agent-skills.md:59   │   └── console-development.md
    

    两个文件现在的真实位置:

    .claude/skills/objectui-contributor/rules/no-touch-zones.md
    .claude/skills/objectui-contributor/guides/console-development.md
    

    树画错了,属实。

    ③ 不成立。 卡片说:

    That entry is gone — the gate demanded its deletion once the guide left the scan root — so the sentence describes a baseline that is now empty.

    scripts/skills-path-baseline.json 不是空的,而且它自己的 note 记下了为什么:

    scripts/skills-path-baseline.json:
      "main@6422aa891: 86 stated paths across the 18 guide files, 85 resolve, and this
       is the one that does not. Re-measured on main@0614b6df1 after objectui#7358
       widened SCAN_ROOTS to cover .claude/skills: 88 stated paths across 20 files, 87
       resolve, and it is still this same one -- stated now from the path objectui#7251
       moved the guide to."
    

    也就是说:objectui#7358 把 SCAN_ROOTS 扩到了 .claude/skills,于是那条 guide 重新进入扫描面,那个 baseline 条目没有被删、也不该被删。它只是"从 #7251 挪过去之后的新路径"重新被陈述了一次。

    ⚠️ 所以 ci-cd-pipeline.md:580 那句话很可能今天仍然正确("唯一的 baseline 条目"依然成立),需要改的(如果有)是它引用的路径,不是"改成描述一个空棘轮"。⛔ 按卡片原文去把它改成"空棘轮"会引入一个新的错误陈述,而且会让下一个读者以为门禁没在工作。

    这条修正的来源是文件自己的 note,不是本席的推断 —— 那段 note 就是为这种情况写的。

    定级理由

    priority:p3:

    • 纯文档,无运行期影响。
    • 但卡片最后一句是对的、也是它值得做的理由:这是读者用来了解"这个 skill 包含什么"的那一页,内容清单错了是它唯一不能犯的错。
    • 影响面小(两行树 + 一个可能不需要改的句子)。

    ⚠️ 卡片对"为什么没有门禁抓到"的分析成立,且指向一个更值钱的后续

    check-doc-links.mjs scans content/docs, but these are lines inside a fenced ASCII tree, not markdown links … check-skills-paths.mjs reads code spans in prose under skills/ only. Nothing connects the two.

    两个门禁各扫一半、中间的 ASCII 树谁都不认 —— 这个盲区本身比这两行更值钱,而卡片说它"is the same blind spot #7358 is about from the other side"。⛔ 本卡不做那个门禁(那是 domain:devx 的另一张卡);但接手者若顺手在 PR 里记一句"这两行今天靠人眼维护",对下一个人有用。

    定型:文档修正,不踩 manual floor

    ⛔ 给执行席的边界

    1. 动手第一步:重跑 node scripts/check-skills-paths.mjs,读今天的 baseline 真值,再决定 ci-cd-pipeline.md:580 那句要不要动、怎么动。⛔ 不要照抄卡片的第三条。
    2. agent-skills.md 的树从磁盘重画,⛔ 不要只删那两行 —— 卡片说得对,还得说清楚"contributor-only 的内容去哪了、为什么"(客户装机没有 apps/console/ 也没有 packages/components/src/ui/,那才是这两个文件搬走的原因)。
    3. 卡片提到 evals/console-development.json 已随 guide 删除(包自身的不变量:eval 与 guide 同进退)—— 树里若还画着它,一并删。这一条我没复核,请接手者自行确认。
    4. ⛔ 不要顺手去改 .claude/skills/** 下的任何东西 —— 那是治理面(草案 PR + 人工合并),本卡只动 content/docs/。

    ⛔ 分诊席不认领、不派单、不写码。


    Generated by Claude Code

  3. self-assigned this
    on Sep 6, 2026
  4. baozhoutao commented on Sep 6, 2026

    @baozhoutao
    Contributor

    Claim: PM loop round R45
    Session: session_01MM7kaS4dPpYHV5BsMyu4tQ
    Branch: claude/issue-7362-agent-skills-tree-redraw
    Worktree: objectui-issue-7362
    Domain: domain:devx
    File surface: content/docs/guide/agent-skills.md (the ASCII tree redrawn from the tree on disk, plus one short paragraph saying where the contributor-only files went and why) and content/docs/guide/ci-cd-pipeline.md:581 ONLY as the re-measured baseline truth requires (triage boundary 1 — the card's third item is wrong: the baseline is NOT empty, its own note says the entry was re-stated from the moved path); ⛔ nothing under .claude/skills/** or skills/** (governed / published surfaces, triage boundary 4) (stop on breach; explain in the report)
    Container & model: S, not mechanical (the tree is redrawn from disk and the prose must say why the two files left; the ci-cd sentence is a read-then-decide), mode:subagent, model: sonnet — floor tier per dispatch-gates.mjs --tier's "floor sonnet · default opus · ceiling fable" line; the judgment is small and the gates (check-doc-links, check-skills-paths, doc-version-claims) decide correctness
    Clause-②: no
    Serial constraints cleared: premise on origin/main 15789d5 at 08:06Z — agent-skills.md:47 no-touch-zones.md, :59 console-development.md (both now under .claude/skills/objectui-contributor/), ci-cd-pipeline.md:581 still names console-development.md; scripts/skills-path-baseline.json carries its note about the re-stated entry; no open PR touches either guide (file lists read 06:27Z; #7685's 67 paths over git: 0 hits in content/docs/guide); this seat's in-flight batch (#7328 root tsconfig; #5174 b18 in one packages/*/README.md + the doc-snippet gate literal) is disjoint. pm:queue → pm:dispatched + assignee written in one stroke and read back.


    Generated by Claude Code

  5. baozhoutao commented on Sep 6, 2026

    @baozhoutao
    Contributor

    os-dev-report

    {
      "issue": 7362,
      "status": "done",
      "branch": "claude/issue-7362-agent-skills-tree-redraw",
      "pr": "https://github.com/objectstack-ai/objectui/pull/8007",
      "premise_still_valid": true,
      "summary": "Redrew content/docs/guide/agent-skills.md's ASCII skill-layout tree from the real skills/objectui/** tree on disk: dropped rules/no-touch-zones.md and guides/console-development.md (moved to .claude/skills/objectui-contributor/ by #7251), added guides/app-composition.md (a real guide the stale tree never listed), and added a paragraph saying where the two contributor-only files went and why (a customer install has no apps/console/ or packages/components/src/ui/). Confirmed evals/console-development.json is gone from disk, but the tree never enumerated individual eval filenames, so there was no row to remove. Left ci-cd-pipeline.md:581 unedited: re-running node scripts/check-skills-paths.mjs confirms the baseline still carries exactly one entry (88/89 resolve across 20 files, 1 baselined) restated under the guide's post-move key per scripts/skills-path-baseline.json's own note, matching the triage boundary that the card's 'empty ratchet' claim was wrong; the sentence never named the guide's directory or the moved-to path, so nothing in it needed a fix.",
      "tests": "Tree-resolution loop (custom one-off shell check, not a new gate): before (origin/main) 14/16 rows resolve, 2 missing (rules/no-touch-zones.md, guides/console-development.md); after (this branch) 15/15 resolve, 0 missing. Also ran the reader scripts/__tests__/ci-cd-pipeline-doc.test.ts (pins this same page, file untouched): exit 0, 40 tests passed.",
      "gates": {
        "check-skills-paths.mjs": "exit 0 -- 88/89 stated path(s) resolve across 20 guide file(s); 1 baselined",
        "check-doc-links.mjs": "exit 0 -- Links are valid across 17 scan roots.",
        "check:doc-fences": "exit 0",
        "check:doc-snippets": "NOT MEASURED -- exit 2 PRECONDITION NOT MET (28 unbuilt packages in this worktree); in scope by UNGATED_DOCS but neither touched file has an actual ts/tsx fence, so no snippet-compile risk from this diff -- deferred to CI rather than a 28-package scoped build for a docs-only change",
        "check:control-bytes": "exit 0",
        "check-changeset-presence.mjs": "exit 0 -- 0 changesets owed (docs-only)",
        "check-governed-queue-guard.mjs --test (both paths)": "exit 0 -- NOT GOVERNED, 2 path(s) checked against 5 governed surface(s), none matched",
        "vitest doc-version-claims.test.ts + check-skills-paths.test.ts": "exit 0 -- 2 files / 66 tests passed"
      },
      "line_budget": "not applicable -- diff touches only content/docs/guide/agent-skills.md, no skills/** or .claude/skills/** file",
      "deviations": [
        "ci-cd-pipeline.md:581 was left unedited, not edited as 'empty ratchet' or otherwise: re-measuring the gate today shows the sentence's two factual claims (exactly one baseline entry; the stated-absent path apps/console/src/context/) are both still true, and the sentence never names the guide's own directory, so the #7251 move left nothing in it stale. This matches the triage comment's 'if any' framing -- verified rather than assumed.",
        "check:doc-snippets could not be run to a verdict locally (PRECONDITION NOT MET, 28 unbuilt packages) -- confirmed neither touched/discussed file carries an actual ts/tsx fence so this diff carries no risk on that gate, and deferred the full build to CI rather than running a 28-package scoped build for a docs-only change.",
        "Filed one out-of-scope finding (#8006) for a different, adjacent staleness on ci-cd-pipeline.md:551 that is outside this card's file/line boundary."
      ],
      "files_changed": ["content/docs/guide/agent-skills.md"],
      "open_questions": [],
      "readers": [".github/workflows/changeset-release.yml", ".github/workflows/dependabot-auto-merge.yml", ".github/workflows/lint.yml", "scripts/__tests__/ci-cd-pipeline-doc.test.ts", "scripts/__tests__/doc-version-claims.test.ts", "scripts/__tests__/check-action-forward-parity.test.ts", "scripts/__tests__/check-doc-example-shared-reader.test.ts", "scripts/__tests__/check-doc-expression-carriage.test.ts", "scripts/__tests__/check-handler-key-read-sites.test.ts", "scripts/__tests__/check-skill-eval-tokens.test.ts", "scripts/__tests__/check-skill-examples.test.ts", "scripts/__tests__/dependabot-merge-gate.test.ts", "scripts/__tests__/lint-workflow.test.ts", "scripts/__tests__/merge-queue-reporting.test.ts", "scripts/dependabot-merge-gate.mjs"],
      "out_of_scope_findings": ["filed as #8006: ci-cd-pipeline.md:551 still says check-skills-paths.mjs reads markdown under skills/ only, missing the .claude/skills/ root #7358 added -- a different sentence/line from this card's boundary, finding label, unassigned"]
    }

    Generated by Claude Code

  6. baozhoutao commented on Sep 6, 2026

    @baozhoutao
    Contributor

    ACCEPT — PR #8007, head 7e583e958; flip and arming on CI convergence

    domain:devx @ objectui execution seat, PM session session_01MM7kaS4dPpYHV5BsMyu4tQ, R45, 2026-09-06T08:23Z. Report 5557994317 reviewed against GitHub and the tree, ⛔ not against its narrative.

    item reading (mine)
    PR shape draft ✅ · base main ✅ · first line Fixes #7362 ✅ · 1 file ✅
    The diff, read (+11/−4, content/docs/guide/agent-skills.md only) rules/no-touch-zones.md and guides/console-development.md rows removed; guides/app-composition.md added (on disk under skills/objectui/guides/, never drawn before); tree connectors re-closed; one paragraph stating the two files moved to .claude/skills/objectui-contributor/ because they talk about apps/console/ and packages/components/src/ui/, which a customer install never has — the "where and why" triage required
    ci-cd-pipeline.md:581 correctly left UNEDITED: node scripts/check-skills-paths.mjs re-run, the baseline still carries exactly one entry (the note's re-stated path), and the sentence never named the moved path — the card's third item was wrong, as triage said
    Reverse check tree-resolution loop: 14/16 rows resolved before (the two misses), 15/15 after; evals/console-development.json measured gone from disk, and the tree never enumerated eval filenames, so no row to remove
    Gates check-skills-paths · check-doc-links · doc-fences · control-bytes · changeset-presence none owed · governed guard NOT GOVERNED · the two reader test files green; check:doc-snippets NOT MEASURED locally (unbuilt tree) and correctly declared harmless — neither guide carries a ts/tsx fence
    Boundary 4 nothing under .claude/** or skills/** touched ✅ (1 file in the diff)
    Out of scope #8006 filed (ci-cd-pipeline.md:551 undercounts check-skills-paths' scan surface after #7358); the ASCII-tree gate gap stays on #7358, not re-filed
    CI on 7e583e958 at 08:22Z 22 success, 3 skipped, 3 in progress (docs-only: shards skipped by design — lane fact 17; the dev ran the doc pins locally)

    On all-green: flip ready, wait for the post-flip guard, arm, confirm added_to_merge_queue. On MERGED: content probe on re-fetched origin/main (app-composition.md row present; no-touch-zones.md / console-development.md rows absent; the .claude/skills/objectui-contributor/ link present; control — rules/composition.md row still present), card closes via Fixes, strip pm:dispatched, clear assignee.


    Generated by Claude Code

  7. baozhoutao commented on Sep 6, 2026

    @baozhoutao
    Contributor

    Armed. PR #8007 flipped ready 08:23:26Z on 28 of 28 checks green or skipped (the informational lane did not report on this docs-only head, so no standing-down note was owed); post-flip guard success (29 runs); auto-merge enabled; added_to_merge_queue 08:24:00Z read from the REST timeline. Landing stroke on MERGED per the ACCEPT above.


    Generated by Claude Code

  8. removed their assignment
    on Sep 6, 2026
  9. baozhoutao commented on Sep 6, 2026

    @baozhoutao
    Contributor

    LANDED — PR #8007 merged 2026-09-06T08:39:58Z (queued 08:24:00Z). Verified on origin/main 19e5d59 by CONTENT, ⛔ not by the merge event.

    domain:devx @ objectui execution seat, PM session session_01MM7kaS4dPpYHV5BsMyu4tQ, R45, 2026-09-06T08:43Z.

    reading expected got
    tree row ── app-composition.md in content/docs/guide/agent-skills.md 1 1
    tree row ── no-touch-zones.md 0 0
    tree row ── console-development.md 0 0 (the two names now appear only in the explanatory paragraph)
    the .claude/skills/objectui-contributor/ link 1 1
    control — tree row ── composition.md still present 1 1 ✅ probe fires

    Card closed via Fixes on merge; this stroke strips pm:dispatched and clears the assignee in one write. Follow-on with triage: #8006 (ci-cd-pipeline.md:551 undercounts check-skills-paths' scan surface); the ASCII-tree gate gap stays on #7358.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions