用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/binary16labs/prime-silo --skill space-widgets命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Be the operator's grounded co-pilot inside the Bridge cockpit (#/_prime_silo/bridge). Load this when the user is on the Bridge and asks "what am I looking at", "explain this graph", "what did I work on", "ingest these docs", "re-run the last manifest", or any question about the mesh on screen — memory, documents, code graph, flows, or runs.
Build animejs.com-grade scroll-driven kinetic pages with the vendored anime.js v4 bundle (website/vendor/anime.esm.min.js). Use when working on the prime-silo marketing site (website/) or any scrollytelling/animation surface. Contains the VERIFIED v4 API, the design language to emulate, the Prime-Silo set-piece specs, and the verification protocol.
Operate the Prime-Silo delivery board (delivery/) autonomously — select, claim, execute, verify, and log work contracts without frontier supervision. Use whenever picking up a task from delivery/board/BOARD.md, authoring a gate script, verifying another agent's task, or deciding which model tier should take which contract.
基于 SOC 职业分类
正在显示 SKILL.md
| name | Space Widgets |
| description | Create, patch, inspect, and remove widgets in the current space |
| metadata | {"placement":"system","when":{"tags":["space:open"]},"loaded":{"tags":["space:open"]}} |
Use this skill for widget work in the current open space
storage
context.import("scripts/...")transient
Current Space Widgets in _____transient lists id|name|col|row|cols|rows|state|render statusCurrent Widget appears after patchWidget(), renderWidget(), or reloadWidget()Current Widget is one envelope with rendered↓ for stripped live HTML and source↓ for the numbered readbackmain helpers
catalog and readback
space.current.* for widget work in the current open spaceCurrent Space Widgets is the live layout summary. Use it before rediscovering ids manuallysnake-game|Snake|... means use readWidget("snake-game")_____framework result↓metadata: ... line before renderer↓_____framework result↓seeWidget(id) strips script/style tags, inline handlers, class lists, ids, and data attrs by defaultseeWidget(id, true) only when you explicitly need the full live innerHTMLsource↓ id: example name: Example cols: 4 rows: 3 renderer↓ 0 async (parent, currentSpace, context) => { 1 console.log("hello"); 2 }
staged turns
Current Space Widgets or _____framework already showed the widget id you need, skip another discovery call and move to the next steprendered↓ for what mounted and source↓ for the next patchexamples Checking widget catalog _javascript return await space.current.listWidgets()
Reading the widget source _javascript return await space.current.readWidget("tetris-game")
Seeing the current rendered widget HTML _javascript return await space.current.seeWidget("tetris-game")
After the catalog already showed snake-game, reading Snake source _javascript return await space.current.readWidget("snake-game")
User asked for the snake widget, reading it directly _javascript return await space.current.readWidget("snake")
bad Checking the current widget source
bad _javascript return await space.current.readWidget("snake-game")
bad Which widget should I change?
bad const widgets = await space.current.listWidgets(); const snake = widgets.widgets.find(...)
bad return await space.current.readWidget("snake-game") return await space.current.patchWidget("snake-game", ...)
bad return await space.current.patchWidget("snake-game", ...) // success came back return await space.current.patchWidget("snake-game", ...)
bad Updating the snake widget background now Applying the color edits now
patch vs rewrite
source↓source↓. Do not use widget.split("\n") array indexes as patch coordinatesexample exact snippet patch _javascript return await space.current.patchWidget("snake-game", { edits: [ { find: "parent.style.background = '#6f8f54';", replace: "parent.style.background = '#5f7f3f';" } ] })
write and reload behavior
rendered↓ and source↓source↓ before claiming successrenderer rules
const mod = await context.import("scripts/utils.js") when several widgets need shared state, widget-to-widget communication, or other space-global functionalitycontext.import(...) resolves relative to the current space root, so copied or imported spaces keep working without hardcoded space ids, titles, or folder namescontext.paths.scripts is the current space scripts folderscripts/... module from each widget so they share one module instance on that space pagescripts/*.js modulescontext instead of hardcoding globals or space ids#101b2d (rgba(16, 27, 45, 0.92)). Do not add another full-card background unless the content truly needs its own stage<x-browser src="google.com"></x-browser> or create an x-browser element in DOMcontrols="true" to x-browser only when the widget needs its own address bar and navigation controls; omit it or use controls="false" for a frameless embedded browser<iframe> for general web browsing widgets. Iframes are not registered browser surfaces, so space.browser, injected browser actions, and last-interacted browser content will not work through themfetch(url) or space.fetchExternal(url). Do not hardcode third-party CORS proxy services; the runtime already retries blocked origins through /api/proxyflow
space.proxy.buildUrl(url)