diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/SKILL.md b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/SKILL.md index 47a23ce1c..c3ee71078 100644 --- a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/SKILL.md +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/SKILL.md @@ -39,7 +39,7 @@ A component owns only the Parts returned for that component. Nested visual owner Surface-level states may use an `ancestorPart` selector rooted at `root`. Define the state rule using the registered state id; do not reproduce host selectors in the package. -Important independent owners include `toolbar-mode`, `floating-mini-chat`, `session-menu`, `composer-voice-input`, `miniapp-bubble-welcome`, `session-title-config`, `assistant-card`, `workspace-item`, `external-mcp-overview`, `miniapp-customize-panel`, `user-message-edit-composer`, `voice-input-diagnostics`, `flow-chat-turn-rail`, and `copyable-text-preview`. Query each owner before styling it. +Important independent owners include `toolbar-mode`, `floating-mini-chat`, `session-menu`, `composer-voice-input`, `miniapp-bubble-welcome`, `session-title-config`, `assistant-card`, `workspace-item`, `external-mcp-overview`, `miniapp-customize-panel`, `user-message-edit-composer`, `voice-input-diagnostics`, `flow-chat-turn-rail`, `copyable-text-preview`, `reasoning-preset-selector`, `reasoning-config-panel`, `reasoning-preset-editor`, `market-account-controls`, and `miniapp-market-view`. Query each owner before styling it. This list is a navigation aid, not an exhaustive contract; the registry is authoritative. The following Parts are not registered and must not be used: @@ -67,7 +67,7 @@ Currently bundled: | Example | Load when | Do not inherit blindly | | --- | --- | --- | -| [cinematic-animated-wallpaper](examples/cinematic-animated-wallpaper/SKILL.md) | Animated character artwork, source-derived glass materials, image-led cards, or illustrated dialogs | Its asset roles, crop defaults, palette, and 43-component/7-scene surface selection | +| [cinematic-animated-wallpaper](examples/cinematic-animated-wallpaper/SKILL.md) | Animated character artwork, source-derived glass materials, image-led cards, or illustrated dialogs | Its asset roles, crop defaults, palette, and selected surface plan | Read [style-example-contract.md](references/style-example-contract.md) before adding or restructuring an example. An example is a design recipe validated against the registry, not a second contract snapshot. diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/agents/openai.yaml b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/agents/openai.yaml new file mode 100644 index 000000000..a81560311 --- /dev/null +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "BitFun Appearance Manual" + short_description: "Author and validate contract-safe BitFun skins" + default_prompt: "Use $create-bitfun-skin to inspect the current Appearance contract, choose a relevant style example, and author or repair a valid sparse skin." diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/SKILL.md b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/SKILL.md index 97e028964..a7f0a6c48 100644 --- a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/SKILL.md +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/SKILL.md @@ -7,7 +7,7 @@ description: Apply the cinematic animated-wallpaper style recipe to a BitFun App Load the parent `create-bitfun-skin` Skill first. The parent registry and package references define what can be changed; this example defines one optional visual strategy. -Do not reuse this example's 43-component/7-scene coverage, asset roles, crop defaults, palette, opacity, or material choices unless they fit the user's artwork and intent. Its [surface-plan.json](references/surface-plan.json) is an example style selection validated against one registry revision, not a list of all current Appearance surfaces. +Do not reuse this example's asset roles, crop defaults, palette, opacity, or material choices unless they fit the user's artwork and intent. Its [surface-plan.json](references/surface-plan.json) is an example style selection validated against one registry revision, not a list of all current Appearance surfaces. Re-query the parent registry whenever the host checkout or bundled snapshot changes. Read [style-playbook.md](references/style-playbook.md) for visual decisions and [palette-contract.md](references/palette-contract.md) before creating a custom palette. Read the parent [media-quality-policy.md](../../references/media-quality-policy.md) before overriding video or WebP quality. diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/references/surface-plan.json b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/references/surface-plan.json index 34ce91c8c..358c341f6 100644 --- a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/references/surface-plan.json +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/examples/cinematic-animated-wallpaper/references/surface-plan.json @@ -3,7 +3,7 @@ "schemaVersion": 1, "scope": "example-style-selection", "styleId": "cinematic-animated-wallpaper", - "validatedAgainstRegistryRevision": "7fdf35b7be1c2693e33caae122dc970fb953865b", + "validatedAgainstRegistryRevision": "71fbdbb26757c930eedfef5cfda55ca12e008ae1", "scenes": { "workbench": { "parts": { diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/appearance-registry.json b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/appearance-registry.json index 35f2ff68e..75b344b3b 100644 --- a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/appearance-registry.json +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/appearance-registry.json @@ -1,9 +1,9 @@ { "schema": "bitfun.appearance.registry", "schemaVersion": 1, - "generatedFrom": "7fdf35b7be1c2693e33caae122dc970fb953865b", - "generatedAt": "2026-08-03T01:06:32.137402+00:00", - "sourceRevision": "7fdf35b7be1c2693e33caae122dc970fb953865b", + "generatedFrom": "71fbdbb26757c930eedfef5cfda55ca12e008ae1", + "generatedAt": "2026-08-06T15:48:31.702263+00:00", + "sourceRevision": "71fbdbb26757c930eedfef5cfda55ca12e008ae1", "sourceDirty": false, "sourceTreeHash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", "components": [ @@ -3022,6 +3022,52 @@ } ] }, + { + "id": "reasoning-preset-selector", + "parts": [ + { + "id": "root", + "propertyProfile": "container" + }, + { + "id": "trigger", + "propertyProfile": "container" + }, + { + "id": "label", + "propertyProfile": "container" + }, + { + "id": "menu", + "propertyProfile": "container" + }, + { + "id": "header", + "propertyProfile": "container" + }, + { + "id": "option", + "propertyProfile": "container" + } + ], + "facets": [], + "states": [ + { + "id": "open", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"open\"]" + } + }, + { + "id": "selected", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"selected\"]" + } + } + ] + }, { "id": "flow-chat-header", "parts": [ @@ -5485,6 +5531,110 @@ { "id": "packageDiagnosticAllowedParts", "propertyProfile": "container" + }, + { + "id": "packageMissingSelection", + "propertyProfile": "container" + }, + { + "id": "marketDialog", + "propertyProfile": "container" + }, + { + "id": "marketToolbar", + "propertyProfile": "container" + }, + { + "id": "marketGrid", + "propertyProfile": "container" + }, + { + "id": "marketCard", + "propertyProfile": "container" + }, + { + "id": "marketPreview", + "propertyProfile": "container" + }, + { + "id": "marketCardBody", + "propertyProfile": "container" + }, + { + "id": "marketStatus", + "propertyProfile": "container" + }, + { + "id": "marketEmpty", + "propertyProfile": "container" + }, + { + "id": "marketError", + "propertyProfile": "container" + }, + { + "id": "marketDetail", + "propertyProfile": "container" + }, + { + "id": "marketDetailPreview", + "propertyProfile": "container" + }, + { + "id": "marketDetailBody", + "propertyProfile": "container" + }, + { + "id": "marketWarning", + "propertyProfile": "container" + }, + { + "id": "marketReleaseList", + "propertyProfile": "container" + }, + { + "id": "marketRelease", + "propertyProfile": "container" + }, + { + "id": "marketActions", + "propertyProfile": "container" + }, + { + "id": "marketNav", + "propertyProfile": "container" + }, + { + "id": "marketWorkflow", + "propertyProfile": "container" + }, + { + "id": "marketManualSubmit", + "propertyProfile": "container" + }, + { + "id": "marketSubmissionList", + "propertyProfile": "container" + }, + { + "id": "marketSubmission", + "propertyProfile": "container" + }, + { + "id": "marketReviewLayout", + "propertyProfile": "container" + }, + { + "id": "marketReviewQueue", + "propertyProfile": "container" + }, + { + "id": "marketReviewDetail", + "propertyProfile": "container" + }, + { + "id": "marketReviewActions", + "propertyProfile": "container" } ], "facets": [ @@ -7940,6 +8090,78 @@ } ] }, + { + "id": "market-account-controls", + "parts": [ + { + "id": "root", + "propertyProfile": "container" + }, + { + "id": "identityTrigger", + "propertyProfile": "container" + }, + { + "id": "menu", + "propertyProfile": "container" + }, + { + "id": "profile", + "propertyProfile": "container" + }, + { + "id": "menuItem", + "propertyProfile": "container" + }, + { + "id": "login", + "propertyProfile": "container" + }, + { + "id": "waiting", + "propertyProfile": "container" + }, + { + "id": "error", + "propertyProfile": "container" + }, + { + "id": "actions", + "propertyProfile": "container" + } + ], + "facets": [], + "states": [ + { + "id": "loading", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"loading\"]" + } + }, + { + "id": "signedOut", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"signed-out\"]" + } + }, + { + "id": "signedIn", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"signed-in\"]" + } + }, + { + "id": "authorizing", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"authorizing\"]" + } + } + ] + }, { "id": "ssh-remote", "parts": [ @@ -8271,6 +8493,16 @@ "propertyProfile": "container", "visualRole": "content" }, + { + "id": "assistantSessionActions", + "propertyProfile": "control", + "visualRole": "control" + }, + { + "id": "assistantSessionMenu", + "propertyProfile": "overlay", + "visualRole": "popup" + }, { "id": "bottomBar", "propertyProfile": "container", @@ -9577,11 +9809,19 @@ "propertyProfile": "container" }, { - "id": "providerGrid", + "id": "providerSearch", + "propertyProfile": "container" + }, + { + "id": "providerList", "propertyProfile": "container" }, { - "id": "providerCard", + "id": "providerRow", + "propertyProfile": "container" + }, + { + "id": "providerSelect", "propertyProfile": "container" }, { @@ -9593,11 +9833,11 @@ "propertyProfile": "container" }, { - "id": "providerModels", + "id": "providerEmpty", "propertyProfile": "container" }, { - "id": "providerTag", + "id": "providerMore", "propertyProfile": "container" }, { @@ -9737,6 +9977,104 @@ } ] }, + { + "id": "reasoning-config-panel", + "parts": [ + { + "id": "root", + "propertyProfile": "container" + }, + { + "id": "body", + "propertyProfile": "container" + }, + { + "id": "footer", + "propertyProfile": "container" + }, + { + "id": "error", + "propertyProfile": "container" + }, + { + "id": "actions", + "propertyProfile": "container" + } + ], + "facets": [], + "states": [] + }, + { + "id": "reasoning-preset-editor", + "parts": [ + { + "id": "root", + "propertyProfile": "container" + }, + { + "id": "section", + "propertyProfile": "container" + }, + { + "id": "primarySettings", + "propertyProfile": "container" + }, + { + "id": "binding", + "propertyProfile": "container" + }, + { + "id": "generated", + "propertyProfile": "container" + }, + { + "id": "header", + "propertyProfile": "container" + }, + { + "id": "empty", + "propertyProfile": "container" + }, + { + "id": "list", + "propertyProfile": "container" + }, + { + "id": "preset", + "propertyProfile": "container" + }, + { + "id": "presetSummary", + "propertyProfile": "container" + }, + { + "id": "presetEditor", + "propertyProfile": "container" + }, + { + "id": "actions", + "propertyProfile": "container" + }, + { + "id": "action", + "propertyProfile": "container" + }, + { + "id": "actionControls", + "propertyProfile": "container" + } + ], + "facets": [], + "states": [ + { + "id": "expanded", + "selector": { + "kind": "self", + "suffix": "[data-bf-state~=\"expanded\"]" + } + } + ] + }, { "id": "external-sources-config", "parts": [ @@ -10408,6 +10746,10 @@ "id": "newSession", "propertyProfile": "container" }, + { + "id": "setPrimary", + "propertyProfile": "container" + }, { "id": "delete", "propertyProfile": "container" diff --git a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/authoring-workflow.md b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/authoring-workflow.md index 8304f34db..29a06e6f7 100644 --- a/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/authoring-workflow.md +++ b/src/crates/assembly/core/builtin_skills/create-bitfun-skin/references/authoring-workflow.md @@ -43,6 +43,8 @@ When a checkout is available, first check registry synchronization and then run For generated skins, record source paths and hashes, style input hashes, build parameters, output hashes, registry provenance, host verification, and runtime inspection state. Rebuild from the record and provide a read-only drift check. +Treat the manifest `version` as the release identity of the importable package. Bump it whenever the manifest, declared assets, renderer settings, selected surfaces, or host-compatibility migration changes. Use a patch bump for compatible corrections and a minor bump for new visual coverage or capabilities. Preserve the version only for a byte-equivalent rebuild of the same package content or when changing reports and other files outside `package/`. + Keep reports, source files, and contact sheets outside the importable `package/` directory. ## 7. Inspect at runtime diff --git a/src/crates/assembly/core/src/agentic/tools/implementations/skills/builtin.rs b/src/crates/assembly/core/src/agentic/tools/implementations/skills/builtin.rs index 6b5bf38af..0f07477f6 100644 --- a/src/crates/assembly/core/src/agentic/tools/implementations/skills/builtin.rs +++ b/src/crates/assembly/core/src/agentic/tools/implementations/skills/builtin.rs @@ -554,6 +554,12 @@ mod tests { "create-bitfun-skin/examples/cinematic-animated-wallpaper/SKILL.md", ); assert!(example.contains("cinematic animated-wallpaper")); + + let metadata = embedded_skill_text("create-bitfun-skin/agents/openai.yaml"); + assert!(metadata.contains("display_name: \"BitFun Appearance Manual\"")); + + let workflow = embedded_skill_text("create-bitfun-skin/references/authoring-workflow.md"); + assert!(workflow.contains("Bump it whenever the manifest")); } #[test]