Skip to content

Delete the published skills/objectstack-pm-dispatch skill — a stale three-state copy of the internal PM protocol with no known consumer, shipped into every new app — and retire its catalog row, docs page, frame-sync copy, tier-table entry, ratchet pins and gate fixtures (maintainer ruling 2026-09-10) #17311

Description

@os-justin

Filed by the domain:skills execution seat (session session_01MoTv7pn338AZ71owsp19gQ, GitHub os-justin) at 2026-09-10T05:4xZ under the maintainer's direct instruction in this seat's chat session (直派通道; labels set by this seat, ⛔ not a triage grading). Claimed and dispatched at once: scripts/pm/dispatch-gates.mjs became free when PR #17294 merged.

裁决 — the maintainer's words, verbatim and untranslated (chat, 2026-09-10)

The question, 03:1xZ: 「对外发布的 skills/objectstack-pm-dispatch/SKILL.md 这个很老了,和现在的也完全不一致吧?是否建议删除。」
The ruling, 05:3xZ: 「发布版 skills/objectstack-pm-dispatch 删」

This is 删已发布能力 — a manual-floor item — ruled by the maintainer in those words. ⚠️ It reverses the 2026-09-03 batch-3 ruling, item 4 option B, which narrowed the decision-frame COPIES to two and kept the published copy (scripts/check-skill-frame-sync.mjs:2–:4: 「exists as TWO hand-written copies across two files (#5798, narrowed to two by the 2026-09-03 batch-3 ruling, item 4 option B — see COPIES below)」). The newer ruling wins; quote both in the PR body.

Measured, 2026-09-10T02:5xZ–05:4xZ (origin/main)

  • skills/objectstack-pm-dispatch/ = SKILL.md (726 lines) + rules/dev-template.md; last touched 2026-09-03 (7b19b9ea), five commits since it was created 2026-09-01. The internal protocol .claude/skills/pm-dispatch/SKILL.md has 33 commits and was touched today.
  • Content parity: the published copy describes a three-state board (pm:queue / pm:dispatched / needs-user-decision + Blocked-by:). None of pm:on-hold, pm:blocked, pm:awaiting-maintainer, pm:retriage, pm:epic, pm:seat, Clause-②, 总监/director, 多仓, dispatch-gates, Restart-when, os-dev appears in it. The only mechanically synced part is the decision-frame block (check:skill-frame-sync COPIES).
  • Ships to third parties: npm create objectstack installs every catalog skill into a new app (packages/create-objectstack/src/created-summary.test.ts:58 names it), and npx skills add objectstack-ai/objectstack/skills --skill '*' installs it into existing projects. Known consumers: none — hotcrm installs no skill (measured 02:56Z); the maintainer runs the PM loop from objectstack sessions with the metadata repo attached.

What to delete and every reference that must move with it (file:line on origin/main; re-measure on your worktree)

  • Delete skills/objectstack-pm-dispatch/SKILL.md and skills/objectstack-pm-dispatch/rules/dev-template.md.
  • skills/README.md:49 — the catalog row.
  • packages/spec/scripts/build-skill-docs.ts:121 — the docs-page entry; then regenerate content/docs/ai/skills-reference.mdx (:55 table row, :188 section) with that tool, ⛔ never hand-edit the generated page.
  • scripts/check-skill-frame-sync.mjs:130–:150 — the published-pm COPIES entry, and the header (:2–:10) that says two copies. With one copy left the gate's isomorphism comparison has no pair; scripts/check-skill-frame-freshness.mjs imports COPIES. Measure what each gate does with a one-entry COPIES and keep both green: the seat's reading is that the anti-dormancy scan (「keeps a dev-side copy from quietly coming back」) is still worth running over one copy, and that a gate whose comparison population was removed by this ruling is DISCHARGED, not weakened — say which of the two you did and why, in the PR body. ⛔ Do not retire either gate script outright without stating that reading.
  • scripts/pm/dispatch-gates.mjs — the MANDATORY_TIER_GLOBS entry glob: 'skills/objectstack-pm-dispatch/SKILL.md' (:10633; a dead glob is refused by the self-test), the population line :19182, and the self-test cases at :21002 and :21022 (「the published PM skill is covered by its own entry AND skills/**」); the docblock's mention of the published PM skill as a frame-copy file. The skills/** entry (PR pm-dispatch: reserve the contract-review tier for the skills seat and the spec seat’s clause-② review; default tier elsewhere; the director’s tier is the maintainer’s per-summon choice #17294) stays and still covers the rest of the catalog.
  • scripts/check-skills-token-ratchet.mjs:362 and :458 (+ the comment at :454) — pinned ceilings for the two deleted files; measure whether the ratchet refuses a pinned path that no longer exists.
  • scripts/check-skill-compatibility-version.mjs:148, :552 and the fixtures at :622, :632, :642 — the register entry and its self-test fixtures (move the fixtures to a surviving catalog skill).
  • scripts/check-doc-authoring.mjs:1807–:1809 and scripts/check-empty-changeset.mjs:631–:632 — self-test fixtures that spell the path; re-point them at a surviving catalog skill.
  • scripts/pm/check-governed-merges.mjs:211 and :3661 — comment-only mentions; correct the wording.
  • scripts/skill-identifier-liveness-ledger.json:4/:10/:16 — three ledger entries for the deleted file.
  • packages/create-objectstack/src/created-summary.test.ts:58 — the expected installed-skill list; measure whether skills-install.ts or any template enumerates skills by name (if it does, that is source and owes a changeset per the gate).
  • Not in this card's surface: .claude/skills/pm-dispatch/SKILL.md and its references/** (owned by A metadata project's cards live in that project's repo — hotcrm's decision cards included; only platform problems are filed on objectstack/objectui: fix the three SKILL.md rows and the core-rules twins that send them to the objectstack inbox #17288's dev, in flight in parallel — :509 「决策框架拷贝所在文件」 stays literally true with an empty set); .claude/agents/os-dev.md. If a gate forces an edit there, stop and report blocked rather than edit.

Acceptance

  1. git ls-files skills/objectstack-pm-dispatch is empty; node scripts/pm/dispatch-gates.mjs --self-test green (dead-glob refusal not tripped; the two cases above removed or re-pointed); --tier skills/objectstack-data/SKILL.md still prints the skills/** mandate.
  2. pnpm -s check:skill-frame-sync and check:skill-frame-freshness green with the stated reading; check:skills-token-ratchet, check:skill-compatibility, check:doc-authoring --self-test, check:empty-changeset --self-test, check:pm-governed-merges, check:skills-paths / check:skill-examples / doc-links green; the docs page regenerated and its gate green; packages/create-objectstack tests green.
  3. Gate list derived with dispatch-gates.mjs --commands over the full change set and every family run; changeset per check-changeset-presence (the seat expects: test-only in create-objectstack ⇒ none; if skills-install.ts or a template changes ⇒ the gate decides).
  4. PR body: Fixes #<this card>, both quotes verbatim at the head, the reversal of the 2026-09-03 item-4 B ruling stated, before/after for every reference above, ## 维护者速读(草稿), ## Acceptance notes. Governed (skills/** + scripts/pm/**) ⇒ draft, four-piece, ⛔ never ready / enqueued / auto-merged / approved by any seat.

Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions