Found while implementing #16485 (item 4 of #15531), deliberately not fixed there: skills/** is a governed surface, so it cannot ride on a code PR.
What
skills/objectstack-platform/SKILL.md line 613, inside the "Complete Working Example" block that shows a whole package.json a reader (or an AI agent following the skill) writes for a new project:
"devDependencies": {
"@objectstack/cli": "^17.0.0",
"typescript": "^6.0.0"
}
^6.0.0 is the value the scaffold emission policy has just retired. After #16485 lands, all three scaffolders — os init, os create and npx create-objectstack — emit typescript: ^5.3.0 from SCAFFOLD_TYPESCRIPT_RANGE in packages/cli/src/commands/init.ts, and this line is the only ^6.0.0 left in the tree (measured: grep -rn '"typescript"' skills/ content/ packages/*/src/templates/ returns this line and nothing else at that value).
Why it is a finding and not a nit
The @objectstack/* ranges in the SAME block are at ^17.0.0 — current. So the block is maintained with the release, and the typescript line is the one value in it that is not: exactly the shape #15818 measured across the three scaffolders, in a fourth carrier that card did not enumerate. This is the on-ramp an AI coding agent reads, so the outcome is the one #16485 exists to prevent — two projects created the same day declaring different TypeScript majors because the author followed a different entry point.
^5.3.0 is not a narrower promise arbitrarily chosen: it is the floor two live doc pages already state (content/docs/getting-started/index.mdx "ObjectStack works with TypeScript 5.3+", content/docs/deployment/troubleshooting.mdx "TypeScript 5.3.0 or later"). ^5.3.0 also does not admit 6.x, so a reader who copies this block gets a project whose declared floor disagrees with every scaffolder's.
Scope
Refs #16485, #15531, #15818.
Generated by Claude Code
Found while implementing #16485 (item 4 of #15531), deliberately not fixed there:
skills/**is a governed surface, so it cannot ride on a code PR.What
skills/objectstack-platform/SKILL.mdline 613, inside the "Complete Working Example" block that shows a wholepackage.jsona reader (or an AI agent following the skill) writes for a new project:^6.0.0is the value the scaffold emission policy has just retired. After #16485 lands, all three scaffolders —os init,os createandnpx create-objectstack— emittypescript: ^5.3.0fromSCAFFOLD_TYPESCRIPT_RANGEinpackages/cli/src/commands/init.ts, and this line is the only^6.0.0left in the tree (measured:grep -rn '"typescript"' skills/ content/ packages/*/src/templates/returns this line and nothing else at that value).Why it is a finding and not a nit
The
@objectstack/*ranges in the SAME block are at^17.0.0— current. So the block is maintained with the release, and thetypescriptline is the one value in it that is not: exactly the shape #15818 measured across the three scaffolders, in a fourth carrier that card did not enumerate. This is the on-ramp an AI coding agent reads, so the outcome is the one #16485 exists to prevent — two projects created the same day declaring different TypeScript majors because the author followed a different entry point.^5.3.0is not a narrower promise arbitrarily chosen: it is the floor two live doc pages already state (content/docs/getting-started/index.mdx"ObjectStack works with TypeScript 5.3+",content/docs/deployment/troubleshooting.mdx"TypeScript 5.3.0 or later").^5.3.0also does not admit 6.x, so a reader who copies this block gets a project whose declared floor disagrees with every scaffolder's.Scope
^5.3.0/^5.8.0/^6.0.0), and restating is what drifted for 102 days #15818 is that a restated version range decays. A skill cannot import a constant, but it can decline to print one.Refs #16485, #15531, #15818.
Generated by Claude Code