unoverse 0.1.197 → 0.1.198

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/skills.mjs +10 -2
  2. package/package.json +1 -1
package/lib/skills.mjs CHANGED
@@ -80,11 +80,19 @@ export function skillFileText(skill, rel, text) {
80
80
  return `---\nname: ${skill}\ndescription: ${desc}\n---\n\n${body}`;
81
81
  }
82
82
 
83
+ /**
84
+ * The site sits behind a CDN that serves llms.txt and pages from cache for a while after
85
+ * a release (observed 2026-09-05: ninety minutes, and the new skill pages absent from the
86
+ * listing throughout). An installer that read the cache would install last release's
87
+ * skills right after this one. A fresh query string is a fresh cache key.
88
+ */
89
+ const fresh = (url) => `${url}?t=${Date.now()}`;
90
+
83
91
  export async function installSkills() {
84
92
  const target = join(homedir(), ".claude", "skills");
85
93
  let files;
86
94
  try {
87
- const res = await fetch(`${DOCS}/llms.txt`);
95
+ const res = await fetch(fresh(`${DOCS}/llms.txt`));
88
96
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
89
97
  files = skillFilesFromLlms(await res.text());
90
98
  } catch {
@@ -101,7 +109,7 @@ export async function installSkills() {
101
109
  const tmp = mkdtempSync(join(tmpdir(), "unoverse-skills-"));
102
110
  try {
103
111
  for (const f of files) {
104
- const res = await fetch(f.url);
112
+ const res = await fetch(fresh(f.url));
105
113
  if (!res.ok) throw new Error(`${f.url}: HTTP ${res.status}`);
106
114
  const p = join(tmp, f.skill, f.rel);
107
115
  mkdirSync(dirname(p), { recursive: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unoverse",
3
- "version": "0.1.197",
3
+ "version": "0.1.198",
4
4
  "description": "The Unoverse front door — create a Studio project, a universe, or a client app, and launch Studio.",
5
5
  "license": "SEE LICENSE IN README.md",
6
6
  "type": "module",