[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X6B9KJQSSD6NAF29MSC2XC":3,"skill-same:01M6X6B9KJQSSD6NAF29MSC2XC":118},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":68,"commitSha":69,"skillDirectory":70,"forksCount":71,"repositoryHtmlUrl":72,"repositoryHomepageUrl":73,"ownerHtmlUrl":74,"ownerBlogUrl":73,"ownerDescription":75,"updatedAt":76,"install":77,"resources":89},"01M6X6B9KJQSSD6NAF29MSC2XC","code-film",null,"Motion film rendered from code, frame-checked.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"code","code film","FiLM","false","design","prove","handler","true","ai-video","manual","product","scope","execution","director","calling","motion","never","write","command","Video","2026-11-10 10:12:30",false,"---\nmodel_tier: inherit\nname: code-film\ndescription: \"Motion film rendered from code, frame-checked.\"\npersonas:\n  - design-director\ndomain: product\nworkspaces:\n  - small-business\npacks:\n  - ai-video\nlifecycle: experimental\ntrust:\n  level: experimental\ninstall:\n  default: false\n  removable: true\nscope:\n  write: []\n  verification_reason: \"execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes.\"\nexecution:\n  type: manual\n---\n\n# code-film\n\n> A motion film whose every frame is a pure function of its timestamp: a page\n> exposes `window.__seek(t)`, `ui:render --profile film` seeks it to each frame,\n> captures, proves the sequence deterministic, checks it against the\n> photosensitivity floor and its declared format, and encodes it with ffmpeg.\n> No paid video provider, no live playback. The values for film motion live in\n> [`references\u002Ffilm-motion.md`](references\u002Ffilm-motion.md); the page contract in\n> [`film-page`](..\u002F..\u002F..\u002Fdocs\u002Fcontracts\u002Ffilm-page.md).\n\n## When to use\n\n- The user asks for a short motion film built from their own material — a\n  product launch clip, a showreel, kinetic typography, an animated chart, a\n  process explainer, a looping brand animation.\n- The film has to render the same twice, sit on a beat or a declared tempo, or\n  ship as an MP4 at a stated size.\n\n## When NOT to use\n\n- A prompt for a generative video provider (Veo, Kling, Sora) → `motion-choreographer`.\n- An animation inside a UI — hover, scroll reveal, page transition → `fe-design` § Motion.\n- Cutting or captioning existing footage → the `\u002Fvideo` cluster.\n- A single static or looping SVG asset → `svg-authoring`.\n\n## Procedure\n\n1. **Inputs.** Ask only what the recipe lists as variable: purpose, format and\n   pixel size, palette as hex, one typeface, audio (none, a supplied file, or a\n   declared tempo), end card. On \"just make it\", state the defaults you used.\n2. **Direction.** Pick one recipe from the corpus and state the one concept every\n   shot serves:\n\n   ```bash\n   node \u003Cskills-root>\u002Fcorpus-grounding\u002Fscripts\u002Fground.mjs search \\\n     --manifest \u003Cskills-root>\u002Fcode-film\u002Fdata\u002Fmanifest.json \"\u003Cthe brief>\"\n   ```\n\n3. **Bans.** Pull the tells for the brief (`--domain tell`) and write each ban\n   with its alternative into the plan.\n4. **Grid.** Tempo and bars from the supplied track (`allin1.sh` when installed;\n   otherwise a declared tempo, reported as declared), then an ordered shot list\n   with times. Hold every text for its reading time (3 words per second).\n5. **Explainers only — claims.** List every on-screen figure, name and date with\n   its source, or mark it as the user's. Invent none.\n6. **Build.** Write the page on the seek contract: `window.__seek(t)`,\n   `window.__videoMeta`, no wall clock, seeded randomness, local fonts. Choose\n   the renderer from `--domain renderer`; plain HTML is the default and a\n   licensed renderer is suggested only after its license question is answered.\n7. **Contact sheet.** Render once, read `contact.png`, fix clutter, overlap and\n   off-beat timing. At most three passes.\n8. **Render.**\n\n   ```bash\n   agent-config ui:render film\u002Findex.html --profile film --out film\u002Fout.mp4 [--audio track.wav]\n   ```\n\n   Exit 0 is clean, 2 carries findings (determinism, flash, dead time, format,\n   network), 1 means not assessed, 3 means no browser driver.\n9. **Report.** Quote the manifest: the seek form, every check as `ran` or\n   `skipped: \u003Creason>`, the findings, and `verification`. Say `verified` only\n   when the manifest says it and its file digest is the file you deliver.\n\n## Status — what each word may mean\n\n- **verified** — every applicable check ran on this machine and the encoded\n  file's digest is the one recorded. It says nothing about whether the film is\n  good.\n- **static-only** — frames were captured and hashed, but a check that needs\n  ffmpeg (flash floor, encode, format) did not run. Name the missing tool.\n- **unassessed** — nothing was seen: no browser driver, no seek form, or no\n  declared length. Name the install or the missing declaration.\n\n## Output format\n\n1. The film path and its SHA-256 from the manifest.\n2. The checks table (`ran` \u002F `skipped: …`) and every finding.\n3. The contact sheet path.\n4. For an explainer, the claims list with sources.\n\n## Gotcha\n\n- A page that uses `Math.random` or `Date.now` renders differently in the reverse\n  pass; the manifest names the first diverging frame. Seed from `t`.\n- The flash floor is a safety floor: a strobe fails and no flag lowers it.\n- The film profile runs the page's scripts with the network off. A font or image\n  fetched from a CDN does not load — ship it next to the page.\n- Determinism is proven per machine; fonts and GPUs differ between machines.\n- A page built on a timeline framework is seen through `window.__timelines`\n  (paused, seekable entries); embedded footage is held at `t − data-start`.\n  Encode footage all-intra (`-g 1`), or a seek lands between keyframes.\n\n## Do NOT\n\n- Do NOT paste prompt text from an external gallery into a plan or a recipe —\n  write it fresh from the corpus.\n- Do NOT bundle or install a renderer without asking; detect and route.\n- Do NOT call a film done from the code alone — the frames decide.\n- Do NOT claim a film is good, on-brand or \"less AI\"; report what was measured.\n\n## See also\n\n- [`motion-choreographer`](..\u002Fmotion-choreographer\u002FSKILL.md) — generative-provider motion prompts.\n- [`svg-authoring`](..\u002Fsvg-authoring\u002FSKILL.md) — the same witness vocabulary for single assets.\n- [`corpus-grounding`](..\u002Fcorpus-grounding\u002FSKILL.md) — the engine behind `data\u002F`.\n","# code-film\n\n> A motion film whose every frame is a pure function of its timestamp: a page\n> exposes `window.__seek(t)`, `ui:render --profile film` seeks it to each frame,\n> captures, proves the sequence deterministic, checks it against the\n> photosensitivity floor and its declared format, and encodes it with ffmpeg.\n> No paid video provider, no live playback. The values for film motion live in\n> [`references\u002Ffilm-motion.md`](references\u002Ffilm-motion.md); the page contract in\n> [`film-page`](..\u002F..\u002F..\u002Fdocs\u002Fcontracts\u002Ffilm-page.md).\n\n## When to use\n\n- The user asks for a short motion film built from their own material — a\n  product launch clip, a showreel, kinetic typography, an animated chart, a\n  process explainer, a looping brand animation.\n- The film has to render the same twice, sit on a beat or a declared tempo, or\n  ship as an MP4 at a stated size.\n\n## When NOT to use\n\n- A prompt for a generative video provider (Veo, Kling, Sora) → `motion-choreographer`.\n- An animation inside a UI — hover, scroll reveal, page transition → `fe-design` § Motion.\n- Cutting or captioning existing footage → the `\u002Fvideo` cluster.\n- A single static or looping SVG asset → `svg-authoring`.\n\n## Procedure\n\n1. **Inputs.** Ask only what the recipe lists as variable: purpose, format and\n   pixel size, palette as hex, one typeface, audio (none, a supplied file, or a\n   declared tempo), end card. On \"just make it\", state the defaults you used.\n2. **Direction.** Pick one recipe from the corpus and state the one concept every\n   shot serves:\n\n   ```bash\n   node \u003Cskills-root>\u002Fcorpus-grounding\u002Fscripts\u002Fground.mjs search \\\n     --manifest \u003Cskills-root>\u002Fcode-film\u002Fdata\u002Fmanifest.json \"\u003Cthe brief>\"\n   ```\n\n3. **Bans.** Pull the tells for the brief (`--domain tell`) and write each ban\n   with its alternative into the plan.\n4. **Grid.** Tempo and bars from the supplied track (`allin1.sh` when installed;\n   otherwise a declared tempo, reported as declared), then an ordered shot list\n   with times. Hold every text for its reading time (3 words per second).\n5. **Explainers only — claims.** List every on-screen figure, name and date with\n   its source, or mark it as the user's. Invent none.\n6. **Build.** Write the page on the seek contract: `window.__seek(t)`,\n   `window.__videoMeta`, no wall clock, seeded randomness, local fonts. Choose\n   the renderer from `--domain renderer`; plain HTML is the default and a\n   licensed renderer is suggested only after its license question is answered.\n7. **Contact sheet.** Render once, read `contact.png`, fix clutter, overlap and\n   off-beat timing. At most three passes.\n8. **Render.**\n\n   ```bash\n   agent-config ui:render film\u002Findex.html --profile film --out film\u002Fout.mp4 [--audio track.wav]\n   ```\n\n   Exit 0 is clean, 2 carries findings (determinism, flash, dead time, format,\n   network), 1 means not assessed, 3 means no browser driver.\n9. **Report.** Quote the manifest: the seek form, every check as `ran` or\n   `skipped: \u003Creason>`, the findings, and `verification`. Say `verified` only\n   when the manifest says it and its file digest is the file you deliver.\n\n## Status — what each word may mean\n\n- **verified** — every applicable check ran on this machine and the encoded\n  file's digest is the one recorded. It says nothing about whether the film is\n  good.\n- **static-only** — frames were captured and hashed, but a check that needs\n  ffmpeg (flash floor, encode, format) did not run. Name the missing tool.\n- **unassessed** — nothing was seen: no browser driver, no seek form, or no\n  declared length. Name the install or the missing declaration.\n\n## Output format\n\n1. The film path and its SHA-256 from the manifest.\n2. The checks table (`ran` \u002F `skipped: …`) and every finding.\n3. The contact sheet path.\n4. For an explainer, the claims list with sources.\n\n## Gotcha\n\n- A page that uses `Math.random` or `Date.now` renders differently in the reverse\n  pass; the manifest names the first diverging frame. Seed from `t`.\n- The flash floor is a safety floor: a strobe fails and no flag lowers it.\n- The film profile runs the page's scripts with the network off. A font or image\n  fetched from a CDN does not load — ship it next to the page.\n- Determinism is proven per machine; fonts and GPUs differ between machines.\n- A page built on a timeline framework is seen through `window.__timelines`\n  (paused, seekable entries); embedded footage is held at `t − data-start`.\n  Encode footage all-intra (`-g 1`), or a seek lands between keyframes.\n\n## Do NOT\n\n- Do NOT paste prompt text from an external gallery into a plan or a recipe —\n  write it fresh from the corpus.\n- Do NOT bundle or install a renderer without asking; detect and route.\n- Do NOT call a film done from the code alone — the frames decide.\n- Do NOT claim a film is good, on-brand or \"less AI\"; report what was measured.\n\n## See also\n\n- [`motion-choreographer`](..\u002Fmotion-choreographer\u002FSKILL.md) — generative-provider motion prompts.\n- [`svg-authoring`](..\u002Fsvg-authoring\u002FSKILL.md) — the same witness vocabulary for single assets.\n- [`corpus-grounding`](..\u002Fcorpus-grounding\u002FSKILL.md) — the engine behind `data\u002F`.\n",{"name":5,"packs":54,"scope":55,"trust":58,"domain":39,"install":60,"personas":62,"execution":64,"lifecycle":59,"model_tier":65,"workspaces":66,"description":7},[37],{"write":56,"verification_reason":57},[],"execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes.",{"level":59},"experimental",{"default":50,"removable":61},true,[63],"design-director",{"type":38},"inherit",[67],"small-business","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Fcode-film",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-14 02:29:41",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":61},[79,82,85],{"tool":80,"command":81},"npx","npx skills add event4u-app\u002Fagent-config --skill code-film",{"tool":83,"command":84},"bunx","bunx skills add event4u-app\u002Fagent-config --skill code-film",{"tool":86,"command":87},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill code-film","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002FSKILL.md",[90,96,102,106,110,114],{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"data\u002Fmanifest.json","REFERENCE","参考文档",1321,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Fdata\u002Fmanifest.json",{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"data\u002Frecipes.csv","ASSET","资产文件",7886,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Fdata\u002Frecipes.csv",{"path":103,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":104,"sourceHtmlUrl":105},"data\u002Frenderers.csv",1176,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Fdata\u002Frenderers.csv",{"path":107,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":108,"sourceHtmlUrl":109},"data\u002Ftells.csv",2986,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Fdata\u002Ftells.csv",{"path":111,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":112,"sourceHtmlUrl":113},"evals\u002Ftriggers.json",2571,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Fevals\u002Ftriggers.json",{"path":115,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Ffilm-motion.md",3469,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fcode-film\u002Freferences\u002Ffilm-motion.md",[119,133,146,158,170,180],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":49},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[125],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[127,128,129,130,131,132],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":49},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[139],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[129,141,142,143,144,132,145],"portable","portable fixture","engineer","only","MCP",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":49},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[152],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[142,154,141,129,155,156,157,132],"non portable fixture","semantic","high","runtime",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":49},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[164],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,168,169],"candidate zero width","candidate","ZeRO","prose",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":177,"publishedAt":49},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[176],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[178,167,169,179],"candidate disclosure suppression","user",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":187,"publishedAt":49},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[186],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[188,167,189,190,191,192],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]