You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 026f941
Browse filesBrowse the repository at this point in the historyBrowse files
feat(create-objectstack): a scaffolded project installs its AI skills from the `@objectstack/skills` package at its own `@objectstack/spec` version, never from the repository's `main` branch
6
+
7
+
Clause-②: no
8
+
9
+
-**The project depends on the catalog.** The blank template's `devDependencies` gain `@objectstack/skills`, at the same `^<version>` as every other `@objectstack/*` dependency, so a new project's dependency set changes: the skills are the ones written for the `@objectstack/spec` it installs.
10
+
-**The install reads `node_modules`.** After `<pm> install`, the scaffolder runs `npx -y skills@1.7.2 experimental_sync --agent claude-code --copy -y`, which copies the installed package's catalog into `.claude/skills/` as real files, once, beside a `skills-lock.json` that names the package as every skill's source. The GitHub `npx skills add objectstack-ai/objectstack/skills …` command is gone from the run, its summary and the `AGENTS.md` and `README.md` it writes into the project.
11
+
-**The summary says what happened.** It names the package version installed and prints the same command for re-installing after an upgrade of the `@objectstack/*` packages, and for any other agent runtime. When the install leaves no catalog to read, the run says so instead of reporting the skills installed.
12
+
-**The flags keep their meaning.**`--skip-skills` skips the skills step. `--skip-install` installs no skills, because nothing is in `node_modules` yet; the summary names `<pm> install` and then the sync command.
13
+
-**To re-install skills in a project created earlier:** add `@objectstack/skills` to `devDependencies` at your `@objectstack/spec` range, run your package manager's install, then `npx skills@1.7.2 experimental_sync --agent claude-code --copy -y` (name your own runtime after `--agent`).
if [ ! -f node_modules/@objectstack/cli/package.json ]; then
@@ -377,6 +382,58 @@ jobs:
377
382
fi
378
383
echo "pinned as expected: FROM tag == resolved CLI ($RESOLVED)"
379
384
385
+
- name: 'Skills: the scaffolder installed exactly the @objectstack/skills catalog'
386
+
# The pinned-shape project above was scaffolded the way a real user
387
+
# does it, skills included. The scaffolder syncs the catalog out of the
388
+
# @objectstack/skills package its own install put in node_modules — at
389
+
# the range it gives every @objectstack/* dependency, so the version of
390
+
# @objectstack/spec — into .claude/skills/ as real files (the measured
391
+
# shapes live in packages/create-objectstack/src/skills-install.ts).
392
+
# So the catalog this step compares against is the package's, read off
393
+
# the registry-installed node_modules, never this checkout's skills/:
394
+
# the same skill names, the same count, copied rather than linked.
395
+
#
396
+
# The unpublished-version window degrades the way the pinned-shape step
397
+
# does, and only that window: with nothing installed at all, that step
398
+
# has already classified the registry answer and failed on any other
399
+
# cause, so this step asserts the degraded shape — no skills from
400
+
# anywhere — instead of nothing. An install that resolved the CLI but
401
+
# no @objectstack/skills is a template that lost its dependency: red.
402
+
run: |
403
+
cd "$RUNNER_TEMP/pinned-probe"
404
+
PKG=node_modules/@objectstack/skills
405
+
if [ ! -f "$PKG/package.json" ]; then
406
+
if [ -f node_modules/@objectstack/cli/package.json ]; then
407
+
echo "::error::the scaffolder's install resolved @objectstack/cli but no @objectstack/skills, so this project got no skills catalog at its own version — the template no longer depends on the package"
408
+
exit 1
409
+
fi
410
+
if [ -e .claude/skills ]; then
411
+
echo "::error::nothing was installed, yet .claude/skills exists — the scaffolder installed skills from a source other than the @objectstack/skills package"
412
+
exit 1
413
+
fi
414
+
echo "::warning::no @objectstack/skills is installed — the unpublished-version window the pinned-shape step classified. Catalog EQUALITY is SKIPPED for this run; the degraded shape (no skills from any source) was asserted."
415
+
exit 0
416
+
fi
417
+
418
+
skills_in() { for d in "$1"/*/; do [ -f "${d}SKILL.md" ] && [ ! -L "${d%/}" ] && basename "$d"; done | sort; }
0 commit comments