Found on a consumer polygon (pnpm monorepo: apps/* + packages/*, per-package ESLint flat config). Related to #478 — same root: the installer "consumerizes" at the link level, not at the working-state level.
Problem
transform_internal_refs() in install.sh (≈L38–49) rewrites markdown links pointing at docs/… / packages/… / README.md into ${UPSTREAM_BLOB_URL} GitHub blob URLs. That fixes broken links, but it cannot ship the runtime dependencies those tools need. So several framework-internal tools arrive in a consumer but silently no-op:
/pipeline (skill copied at install.sh ≈L283–290) requires docs/meta-factory/wave-sequencing-plan.md. Consumers have no docs/meta-factory/ at all → §1 plan-currency and §2/§3 dispatch degrade to no-op. Verified by running /pipeline <umbrella>: it printed MISSING: wave-sequencing-plan.md, Plan status: CURRENT (nothing to reconcile), and §3 produced no umbrella / no dispatch state.
- runtime-bridge (§4c / §5 dispatch tree) invokes
packages/runtime-bridge/src/cli/dispatch.ts and harvest.ts. That package does not exist in a consumer install.
- §6 recursive self-application instructs
npm --prefix packages/core run test:principles and links packages/core/principles/12-ai-laziness-traps.test.ts. A consumer's packages/core (if any) has no principles/ and no such script.
A link to a file is not the file; a link to a test is not a runnable test.
Why it matters
The tool is readable (links resolve to the upstream repo) but not operable. A consumer who runs /pipeline gets a tool that runs but has nothing to operate on — confusing, and indistinguishable from "broken" without reading the source.
Suggested directions (any one)
- Detect consumer context (
pnpm-workspace.yaml present / no docs/meta-factory/) and do not ship framework-only skills (/pipeline, runtime-bridge instructions) to consumers.
- Or gate them: ship with an explicit guard that prints "requires framework layout (
docs/meta-factory/…) — skipped in consumer mode" instead of silently no-opping.
- Or parameterize the skill so its runtime references (
packages/core/principles, packages/runtime-bridge) are conditional and self-skip when absent.
The skill already anticipates the data gap (§1: "if wave-sequencing-plan.md is MISSING — write a stub and ask") — so the no-op is a known edge that could be promoted to an explicit consumer-mode skip.
Companion finding (#483): install is not "one-button" — copies files but leaves a manual checklist + no branch/MCP/plugin setup.
Found on a consumer polygon (pnpm monorepo:
apps/*+packages/*, per-package ESLint flat config). Related to #478 — same root: the installer "consumerizes" at the link level, not at the working-state level.Problem
transform_internal_refs()ininstall.sh(≈L38–49) rewrites markdown links pointing atdocs/…/packages/…/README.mdinto${UPSTREAM_BLOB_URL}GitHub blob URLs. That fixes broken links, but it cannot ship the runtime dependencies those tools need. So several framework-internal tools arrive in a consumer but silently no-op:/pipeline(skill copied atinstall.sh≈L283–290) requiresdocs/meta-factory/wave-sequencing-plan.md. Consumers have nodocs/meta-factory/at all → §1 plan-currency and §2/§3 dispatch degrade to no-op. Verified by running/pipeline <umbrella>: it printedMISSING: wave-sequencing-plan.md,Plan status: CURRENT(nothing to reconcile), and §3 producedno umbrella / no dispatch state.packages/runtime-bridge/src/cli/dispatch.tsandharvest.ts. That package does not exist in a consumer install.npm --prefix packages/core run test:principlesand linkspackages/core/principles/12-ai-laziness-traps.test.ts. A consumer'spackages/core(if any) has noprinciples/and no such script.A link to a file is not the file; a link to a test is not a runnable test.
Why it matters
The tool is readable (links resolve to the upstream repo) but not operable. A consumer who runs
/pipelinegets a tool that runs but has nothing to operate on — confusing, and indistinguishable from "broken" without reading the source.Suggested directions (any one)
pnpm-workspace.yamlpresent / nodocs/meta-factory/) and do not ship framework-only skills (/pipeline, runtime-bridge instructions) to consumers.docs/meta-factory/…) — skipped in consumer mode" instead of silently no-opping.packages/core/principles,packages/runtime-bridge) are conditional and self-skip when absent.The skill already anticipates the data gap (§1: "if
wave-sequencing-plan.mdis MISSING — write a stub and ask") — so the no-op is a known edge that could be promoted to an explicit consumer-mode skip.Companion finding (#483): install is not "one-button" — copies files but leaves a manual checklist + no branch/MCP/plugin setup.