Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/main a59f78d; 50 findings PLAT-A … PLAT-I. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-platform/findings.md).
Audit summary
8 files / 2,656 lines / 24,278 tokens (12.9% of the bundle, 3rd largest); all 6 ratcheted files at 0–4 tokens of headroom. File graph: rules/bootstrap-patterns.md (1,093 tok) is an orphan — zero inbound links repo-wide and ~fully duplicated by SKILL.md; references/plugin-hooks.md (2,628, hand-authored, the canonical hooks reference) is reachable only via rules/plugin-hooks-events.md (985), a file that calls itself a "compact pointer" and then restates it. Real usage: 5 patterns; plugin authoring and the os validate/os dev loop well covered; objectstack.config.ts partial (teaches shapes the 4 real configs never use, omits 3 they all use); requires: capability tokens and the onEnable export have zero coverage. CLI verification clean: every os command at SKILL.md:1117-1214 resolves, and the negative claims hold. Example gate: 80 TypeScript fences, 2 marked — both teach data authoring; zero plugin/kernel/service examples are type-checked. Verdict RESTRUCTURE (net ≈ −5,970 tok, −24.6%).
Top findings (|Δtok| × confidence)
| # |
id · span · proposal |
Δtok |
| 1 |
PLAT-B-01 · rules/bootstrap-patterns.md:1-142 · DELETE — orphan, duplicated by SKILL.md:209-234,327-339,351-357,389-397 |
−1,093 |
| 2 |
PLAT-B-02 · rules/plugin-hooks-events.md:1-108 · MERGE-INTO references/plugin-hooks.md (the self-declared pointer restates it) |
−985 |
| 3 |
PLAT-D-03 · rules/service-registry.md:270-319 · DELETE naming conventions + toBeDefined() test + 10 best-practices |
−452 |
| 4 |
PLAT-D-02 · rules/plugin-lifecycle.md:293-340 · DELETE "Version your plugin", reverse-domain names, two vacuous vitest blocks |
−409 |
| 5 |
PLAT-C-05 · 5 in-package sites · DELETE 4 of 5 — the data:* boundary is stated 7× counting frontmatter + catalog |
−310 |
| 6 |
PLAT-B-03 · SKILL.md:39-49 + :699-708 · DELETE — "When to Use This Skill" twice |
−276 |
| 7 |
PLAT-H-01 · evals/README.md · planned stubs (DEFERRED, #14296 item 2) |
−246 |
| 8 |
PLAT-D-04 · references/plugin-hooks.md:312-327 · DELETE 7 best-practices restating the same file |
−235 |
| 9 |
PLAT-E-01 · SKILL.md:527-542 · REWRITE-AS-CONSTRUCT — Host Pattern uses defineStack/SqlDriver un-imported, CrmApp/TodoApp undefined, { ... } → TS1109 |
−227 |
| 10 |
PLAT-D-08 · rules/plugin-lifecycle.md:201-230 vs rules/service-registry.md:193-223 · DELETE the lifecycle copy |
−225 |
| 11 |
PLAT-C-01 · SKILL.md:548-576 · DELETE → pointer — duplicates objectstack-data seeds and writes object: by hand, which data forbids |
−190 |
| 12 |
PLAT-D-01 · SKILL.md:735-758 · DELETE ASCII decision tree restating the table 2 lines above |
−183 |
| 13 |
PLAT-C-02 · SKILL.md:626-663 · REWRITE-AS-CONSTRUCT — re-teaches field types in a spelling 7/7 real object files don't use |
−180 |
| 14 |
PLAT-B-07 · rules/service-registry.md:145-158 · MERGE-INTO SKILL.md:1008-1024 |
−174 |
| 15 |
PLAT-D-06 · references/plugin-hooks.md:252-311 · DELETE second near-identical vitest block |
−150 |
Also load-bearing: PLAT-F-05 (composeStacks() — zero usages outside spec + tests, −165 → one row), PLAT-F-06 (driver-as-plugins: taught as canonical; zero app configs do it — the CLI wires it at serve.ts:2687-2745, −100), PLAT-B-06 (−129), PLAT-D-07 (−210), PLAT-G-01 (project → environment, five spans, against skills/README.md:88).
Imprecision to fix
SKILL.md:79-80 says the blank template ships "One example object, in-memory driver, Hono server" — the template's config has neither driver nor Hono plugin (packages/create-objectstack/src/templates/blank/objectstack.config.ts:40-44); both arrive from CLI auto-registration. State it as the running app, not the file.
Three funded additions
manifest.engines: { protocol: '^17' } — one Manifest Reference row (+40, paid by PLAT-C-01): 4 real usages incl. every create-objectstack project; grep engines skills/objectstack-platform/ → 0.
requires: [...] capability tokens — a token table in the Boot Sequence (+120, paid by PLAT-D-07 + PLAT-B-03): packages/cli/src/commands/serve.ts:1446-1560 ~20 providers; 3 real configs declare it.
- The
onEnable export — 4 lines in the Boot Sequence (+60, paid by PLAT-B-06 + PLAT-D-01): 4 real sites.
Flight scope
IMPLEMENT (shrink-only): delete rules/bootstrap-patterns.md (orphan) and rules/plugin-hooks-events.md (its unique content folded into references/plugin-hooks.md and paid there by PLAT-D-04 + PLAT-D-06); link references/plugin-hooks.md directly from SKILL.md; drop both deleted files' ceiling rows; every other DELETE / MERGE-INTO / REWRITE-AS-CONSTRUCT row at HIGH or MED; the three funded additions; PLAT-G-01 vocabulary; PLAT-B-05 reorder (free — bring defineStack() above the preamble); os:check on the self-contained plugin/kernel examples that pass.
ANCHOR RULINGS: references/plugin-hooks.md path stays STABLE — objectstack-data's hooks file links here and the data flight re-points its link to this path. Seeds → anchor objectstack-data (PLAT-C-01: delete + pointer). Field types → objectstack-data (PLAT-C-02). data:* boundary: keep ONE statement in SKILL.md. The api flight deletes its datasource/service-registry copies and points at SKILL.md:353-357 / rules/service-registry.md — keep those stable. The upstream-reporting residue of objectstack-pm-dispatch points at SKILL.md:59-70 — keep that section.
DEFER (pending #14296): PLAT-H-01 (eval stubs, item 2).
Flight constraints (binding)
- ONE draft PR, first line
Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
- Token ratchet: no ratcheted file may grow; additions paid by deletions in the SAME file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files;
scripts/check-skills-token-ratchet.mjs touched ONLY to drop the rows of the two deleted files.
- ⛔ Never edit another package's files: MERGE-INTO another package = DELETE here + one-line pointer; a missing/weaker anchor goes in the PR body under "follow-up for ".
- Generated files untouched (
references/_index.md); frontmatter edits ⇒ regenerate skills/README.md.
- Live surface with zero measured usage ⇒ one row pointing at its schema, never delete the last mention; retired/tombstoned surface ⇒ delete.
- Gates:
node scripts/check-skills-token-ratchet.mjs, pnpm --filter @objectstack/spec check:skill-examples, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
- PR body: per-item 落点 | before | after list keyed by finding id; per-file token delta;
needs:contract-review on both carriers if any operator/contract-semantics claim changes.
Refs: #14292 · #14296 · #13658.
Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session
session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstackorigin/maina59f78d; 50 findings PLAT-A … PLAT-I. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpadaudit/objectstack-platform/findings.md).Audit summary
8 files / 2,656 lines / 24,278 tokens (12.9% of the bundle, 3rd largest); all 6 ratcheted files at 0–4 tokens of headroom. File graph:
rules/bootstrap-patterns.md(1,093 tok) is an orphan — zero inbound links repo-wide and ~fully duplicated bySKILL.md;references/plugin-hooks.md(2,628, hand-authored, the canonical hooks reference) is reachable only viarules/plugin-hooks-events.md(985), a file that calls itself a "compact pointer" and then restates it. Real usage: 5 patterns; plugin authoring and theos validate/os devloop well covered;objectstack.config.tspartial (teaches shapes the 4 real configs never use, omits 3 they all use);requires:capability tokens and theonEnableexport have zero coverage. CLI verification clean: everyoscommand atSKILL.md:1117-1214resolves, and the negative claims hold. Example gate: 80 TypeScript fences, 2 marked — both teach data authoring; zero plugin/kernel/service examples are type-checked. Verdict RESTRUCTURE (net ≈ −5,970 tok, −24.6%).Top findings (|Δtok| × confidence)
rules/bootstrap-patterns.md:1-142· DELETE — orphan, duplicated bySKILL.md:209-234,327-339,351-357,389-397rules/plugin-hooks-events.md:1-108· MERGE-INTOreferences/plugin-hooks.md(the self-declared pointer restates it)rules/service-registry.md:270-319· DELETE naming conventions +toBeDefined()test + 10 best-practicesrules/plugin-lifecycle.md:293-340· DELETE "Version your plugin", reverse-domain names, two vacuous vitest blocksdata:*boundary is stated 7× counting frontmatter + catalogSKILL.md:39-49+:699-708· DELETE — "When to Use This Skill" twiceevals/README.md· planned stubs (DEFERRED, #14296 item 2)references/plugin-hooks.md:312-327· DELETE 7 best-practices restating the same fileSKILL.md:527-542· REWRITE-AS-CONSTRUCT — Host Pattern usesdefineStack/SqlDriverun-imported,CrmApp/TodoAppundefined,{ ... }→ TS1109rules/plugin-lifecycle.md:201-230vsrules/service-registry.md:193-223· DELETE the lifecycle copySKILL.md:548-576· DELETE → pointer — duplicates objectstack-data seeds and writesobject:by hand, which data forbidsSKILL.md:735-758· DELETE ASCII decision tree restating the table 2 lines aboveSKILL.md:626-663· REWRITE-AS-CONSTRUCT — re-teaches field types in a spelling 7/7 real object files don't userules/service-registry.md:145-158· MERGE-INTOSKILL.md:1008-1024references/plugin-hooks.md:252-311· DELETE second near-identical vitest blockAlso load-bearing: PLAT-F-05 (
composeStacks()— zero usages outside spec + tests, −165 → one row), PLAT-F-06 (driver-as-plugins:taught as canonical; zero app configs do it — the CLI wires it atserve.ts:2687-2745, −100), PLAT-B-06 (−129), PLAT-D-07 (−210), PLAT-G-01 (project→environment, five spans, againstskills/README.md:88).Imprecision to fix
SKILL.md:79-80says theblanktemplate ships "One example object, in-memory driver, Hono server" — the template's config has neither driver nor Hono plugin (packages/create-objectstack/src/templates/blank/objectstack.config.ts:40-44); both arrive from CLI auto-registration. State it as the running app, not the file.Three funded additions
manifest.engines: { protocol: '^17' }— one Manifest Reference row (+40, paid by PLAT-C-01): 4 real usages incl. everycreate-objectstackproject;grep engines skills/objectstack-platform/→ 0.requires: [...]capability tokens — a token table in the Boot Sequence (+120, paid by PLAT-D-07 + PLAT-B-03):packages/cli/src/commands/serve.ts:1446-1560~20 providers; 3 real configs declare it.onEnableexport — 4 lines in the Boot Sequence (+60, paid by PLAT-B-06 + PLAT-D-01): 4 real sites.Flight scope
IMPLEMENT (shrink-only): delete
rules/bootstrap-patterns.md(orphan) andrules/plugin-hooks-events.md(its unique content folded intoreferences/plugin-hooks.mdand paid there by PLAT-D-04 + PLAT-D-06); linkreferences/plugin-hooks.mddirectly fromSKILL.md; drop both deleted files' ceiling rows; every other DELETE / MERGE-INTO / REWRITE-AS-CONSTRUCT row at HIGH or MED; the three funded additions; PLAT-G-01 vocabulary; PLAT-B-05 reorder (free — bringdefineStack()above the preamble);os:checkon the self-contained plugin/kernel examples that pass.ANCHOR RULINGS:
references/plugin-hooks.mdpath stays STABLE — objectstack-data's hooks file links here and the data flight re-points its link to this path. Seeds → anchor objectstack-data (PLAT-C-01: delete + pointer). Field types → objectstack-data (PLAT-C-02).data:*boundary: keep ONE statement inSKILL.md. The api flight deletes its datasource/service-registry copies and points atSKILL.md:353-357/rules/service-registry.md— keep those stable. The upstream-reporting residue of objectstack-pm-dispatch points atSKILL.md:59-70— keep that section.DEFER (pending #14296): PLAT-H-01 (eval stubs, item 2).
Flight constraints (binding)
Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.scripts/check-skills-token-ratchet.mjstouched ONLY to drop the rows of the two deleted files.references/_index.md); frontmatter edits ⇒ regenerateskills/README.md.node scripts/check-skills-token-ratchet.mjs,pnpm --filter @objectstack/spec check:skill-examples,pnpm check:skill-compatibility,pnpm check:skill-identifier-liveness, plusnode scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.needs:contract-reviewon both carriers if any operator/contract-semantics claim changes.Refs: #14292 · #14296 · #13658.