akari-video 0.1.0

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 (492) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/bin/akari.mjs +14 -0
  4. package/package.json +42 -0
  5. package/src/cli.mjs +140 -0
  6. package/src/messages.mjs +100 -0
  7. package/src/path-lookup.mjs +47 -0
  8. package/src/project-state.mjs +25 -0
  9. package/src/repo-assets.mjs +59 -0
  10. package/src/task-labels.mjs +30 -0
  11. package/src/update-check.mjs +189 -0
  12. package/vendor/packages/project-scaffold/package.json +11 -0
  13. package/vendor/packages/project-scaffold/src/index.mjs +523 -0
  14. package/vendor/packages/project-scaffold/test/create-project.test.mjs +81 -0
  15. package/vendor/packages/project-scaffold/test/skill-adapter-link.test.mjs +204 -0
  16. package/vendor/packages/schemas/analysis.schema.json +475 -0
  17. package/vendor/packages/schemas/asset-meta.schema.json +225 -0
  18. package/vendor/packages/schemas/avatar-rendition.schema.json +65 -0
  19. package/vendor/packages/schemas/avatar.schema.json +178 -0
  20. package/vendor/packages/schemas/bin/validate-asset.mjs +597 -0
  21. package/vendor/packages/schemas/bin/validate-avatar.mjs +486 -0
  22. package/vendor/packages/schemas/bin/validate-captions.mjs +316 -0
  23. package/vendor/packages/schemas/bin/validate-connections.mjs +295 -0
  24. package/vendor/packages/schemas/bin/validate-edit.mjs +766 -0
  25. package/vendor/packages/schemas/bin/validate-intake.mjs +185 -0
  26. package/vendor/packages/schemas/bin/validate-interpretation.mjs +515 -0
  27. package/vendor/packages/schemas/bin/validate-plan-comments.mjs +170 -0
  28. package/vendor/packages/schemas/bin/validate-plan.mjs +365 -0
  29. package/vendor/packages/schemas/bin/validate-recipe.mjs +267 -0
  30. package/vendor/packages/schemas/bin/validate-research-plan.mjs +510 -0
  31. package/vendor/packages/schemas/bin/validate-review.mjs +427 -0
  32. package/vendor/packages/schemas/captions.schema.json +141 -0
  33. package/vendor/packages/schemas/connections.schema.json +153 -0
  34. package/vendor/packages/schemas/edit.schema.json +437 -0
  35. package/vendor/packages/schemas/examples/analysis-person-matte-valid/analysis.json +18 -0
  36. package/vendor/packages/schemas/examples/captions-text-style-background-mode-invalid/captions.json +18 -0
  37. package/vendor/packages/schemas/examples/captions-text-style-color-non-hex-invalid/captions.json +14 -0
  38. package/vendor/packages/schemas/examples/captions-text-style-default-only-valid/captions.json +27 -0
  39. package/vendor/packages/schemas/examples/captions-text-style-omitted-valid/captions.json +11 -0
  40. package/vendor/packages/schemas/examples/captions-text-style-opacity-out-of-range-invalid/captions.json +8 -0
  41. package/vendor/packages/schemas/examples/captions-text-style-record-override-valid/captions.json +27 -0
  42. package/vendor/packages/schemas/examples/captions-text-style-size-non-positive-invalid/captions.json +14 -0
  43. package/vendor/packages/schemas/examples/captions-text-style-zone-invalid/captions.json +16 -0
  44. package/vendor/packages/schemas/examples/connections-v0-invalid-auth/connections.json +32 -0
  45. package/vendor/packages/schemas/examples/connections-v0-memory-valid/connections.json +42 -0
  46. package/vendor/packages/schemas/examples/edit-beats-duplicate-id/edit.json +11 -0
  47. package/vendor/packages/schemas/examples/edit-beats-invalid-id/edit.json +10 -0
  48. package/vendor/packages/schemas/examples/edit-beats-missing-kind/edit.json +10 -0
  49. package/vendor/packages/schemas/examples/edit-beats-strength-out-of-range/edit.json +11 -0
  50. package/vendor/packages/schemas/examples/edit-beats-v0-src-present/edit.json +10 -0
  51. package/vendor/packages/schemas/examples/edit-beats-v0-valid/edit.json +29 -0
  52. package/vendor/packages/schemas/examples/edit-beats-v1-src-missing-reference/edit.json +14 -0
  53. package/vendor/packages/schemas/examples/edit-beats-v1-valid/edit.json +37 -0
  54. package/vendor/packages/schemas/examples/edit-bgm-ducking-invalid/edit.json +10 -0
  55. package/vendor/packages/schemas/examples/edit-bgm-fade-invalid/edit.json +10 -0
  56. package/vendor/packages/schemas/examples/edit-bgm-fade-valid/edit.json +10 -0
  57. package/vendor/packages/schemas/examples/edit-bgm-in-invalid/edit.json +10 -0
  58. package/vendor/packages/schemas/examples/edit-bgm-in-valid/edit.json +10 -0
  59. package/vendor/packages/schemas/examples/edit-bgm-missing-path/edit.json +10 -0
  60. package/vendor/packages/schemas/examples/edit-bgm-null-valid/edit.json +11 -0
  61. package/vendor/packages/schemas/examples/edit-bgm-sfx-gain-out-of-range/edit.json +11 -0
  62. package/vendor/packages/schemas/examples/edit-bgm-sfx-valid/edit.json +23 -0
  63. package/vendor/packages/schemas/examples/edit-chroma-key-invalid/edit.json +7 -0
  64. package/vendor/packages/schemas/examples/edit-cuts-at-negative-invalid/edit.json +7 -0
  65. package/vendor/packages/schemas/examples/edit-cuts-at-track-valid/edit.json +20 -0
  66. package/vendor/packages/schemas/examples/edit-cuts-opacity-out-of-range-invalid/edit.json +16 -0
  67. package/vendor/packages/schemas/examples/edit-cuts-track-invalid/edit.json +7 -0
  68. package/vendor/packages/schemas/examples/edit-cuts-transform-full-valid/edit.json +17 -0
  69. package/vendor/packages/schemas/examples/edit-cuts-transform-omitted-valid/edit.json +9 -0
  70. package/vendor/packages/schemas/examples/edit-cuts-transform-partial-valid/edit.json +16 -0
  71. package/vendor/packages/schemas/examples/edit-cuts-transform-rotate-invalid/edit.json +16 -0
  72. package/vendor/packages/schemas/examples/edit-cuts-transform-scale-invalid/edit.json +16 -0
  73. package/vendor/packages/schemas/examples/edit-cuts-transform-unknown-key-invalid/edit.json +16 -0
  74. package/vendor/packages/schemas/examples/edit-direction-intensity-negative/edit.json +8 -0
  75. package/vendor/packages/schemas/examples/edit-direction-intensity-not-integer/edit.json +8 -0
  76. package/vendor/packages/schemas/examples/edit-direction-intensity-out-of-range/edit.json +8 -0
  77. package/vendor/packages/schemas/examples/edit-direction-missing-preset/edit.json +8 -0
  78. package/vendor/packages/schemas/examples/edit-direction-overrides-array/edit.json +8 -0
  79. package/vendor/packages/schemas/examples/edit-direction-preset-only/edit.json +8 -0
  80. package/vendor/packages/schemas/examples/edit-direction-valid/edit.json +8 -0
  81. package/vendor/packages/schemas/examples/edit-emphasis-words-empty-word/edit.json +10 -0
  82. package/vendor/packages/schemas/examples/edit-emphasis-words-invalid-id/edit.json +10 -0
  83. package/vendor/packages/schemas/examples/edit-emphasis-words-missing-emotion/edit.json +10 -0
  84. package/vendor/packages/schemas/examples/edit-emphasis-words-range-invalid/edit.json +11 -0
  85. package/vendor/packages/schemas/examples/edit-emphasis-words-v0-src-present/edit.json +10 -0
  86. package/vendor/packages/schemas/examples/edit-emphasis-words-v0-valid/edit.json +32 -0
  87. package/vendor/packages/schemas/examples/edit-emphasis-words-v1-valid/edit.json +39 -0
  88. package/vendor/packages/schemas/examples/edit-layers-invalid-bad-blend/edit.json +17 -0
  89. package/vendor/packages/schemas/examples/edit-layers-invalid-chroma-key-on-baked/edit.json +17 -0
  90. package/vendor/packages/schemas/examples/edit-layers-invalid-duplicate-id/edit.json +11 -0
  91. package/vendor/packages/schemas/examples/edit-layers-track-invalid/edit.json +8 -0
  92. package/vendor/packages/schemas/examples/edit-layers-valid/edit.json +31 -0
  93. package/vendor/packages/schemas/examples/edit-look-invalid/edit.json +7 -0
  94. package/vendor/packages/schemas/examples/edit-master-invalid/edit.json +8 -0
  95. package/vendor/packages/schemas/examples/edit-narration-gain-out-of-range/edit.json +18 -0
  96. package/vendor/packages/schemas/examples/edit-narration-invalid-id/edit.json +17 -0
  97. package/vendor/packages/schemas/examples/edit-narration-missing-provenance/edit.json +16 -0
  98. package/vendor/packages/schemas/examples/edit-narration-valid/edit.json +36 -0
  99. package/vendor/packages/schemas/examples/edit-narration-voicevox-missing-credit/edit.json +20 -0
  100. package/vendor/packages/schemas/examples/edit-render-basics-valid/edit.json +22 -0
  101. package/vendor/packages/schemas/examples/edit-sfx-in-invalid/edit.json +10 -0
  102. package/vendor/packages/schemas/examples/edit-sfx-in-out-valid/edit.json +10 -0
  103. package/vendor/packages/schemas/examples/edit-sfx-out-invalid/edit.json +10 -0
  104. package/vendor/packages/schemas/examples/edit-sfx-out-type-invalid/edit.json +10 -0
  105. package/vendor/packages/schemas/examples/edit-sfx-t-invalid/edit.json +10 -0
  106. package/vendor/packages/schemas/examples/edit-sfx-track-invalid/edit.json +8 -0
  107. package/vendor/packages/schemas/examples/edit-speed-invalid/edit.json +7 -0
  108. package/vendor/packages/schemas/examples/edit-timeline-declared-valid/edit.json +14 -0
  109. package/vendor/packages/schemas/examples/edit-timeline-duplicate-id-invalid/edit.json +13 -0
  110. package/vendor/packages/schemas/examples/edit-timeline-interleaved-valid/edit.json +22 -0
  111. package/vendor/packages/schemas/examples/edit-timeline-omitted-valid/edit.json +7 -0
  112. package/vendor/packages/schemas/examples/edit-timeline-ref-invalid/edit.json +13 -0
  113. package/vendor/packages/schemas/examples/edit-tracks-section-invalid/edit.json +8 -0
  114. package/vendor/packages/schemas/examples/edit-tracks-section-valid/edit.json +13 -0
  115. package/vendor/packages/schemas/examples/edit-transition-invalid/edit.json +10 -0
  116. package/vendor/packages/schemas/examples/edit-v0-sample/edit.json +27 -0
  117. package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-a.html +17 -0
  118. package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-b.html +17 -0
  119. package/vendor/packages/schemas/examples/edit-v1-bgm-sfx-valid/edit.json +13 -0
  120. package/vendor/packages/schemas/examples/edit-v1-sample/edit.json +14 -0
  121. package/vendor/packages/schemas/examples/plan-comments-v0-sample/plan-comments.json +19 -0
  122. package/vendor/packages/schemas/examples/plan-v0-sample/plan.json +39 -0
  123. package/vendor/packages/schemas/examples/recipe-v0-sample/product-demo-quick-cuts.json +23 -0
  124. package/vendor/packages/schemas/examples/review-v1-sample/review.json +11 -0
  125. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/AVATAR.md +159 -0
  126. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/avatar.json +22 -0
  127. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/happy.png +0 -0
  128. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-half.png +0 -0
  129. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-open.png +0 -0
  130. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral.png +0 -0
  131. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/rendition.json +18 -0
  132. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/happy.png +0 -0
  133. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-half.png +0 -0
  134. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-open.png +0 -0
  135. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral.png +0 -0
  136. package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/rendition.json +18 -0
  137. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/AVATAR.md +30 -0
  138. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/avatar.json +22 -0
  139. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/happy.png +0 -0
  140. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-half.png +0 -0
  141. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-open.png +0 -0
  142. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral.png +0 -0
  143. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/rendition.json +18 -0
  144. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/happy.png +0 -0
  145. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-half.png +0 -0
  146. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-open.png +0 -0
  147. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral.png +0 -0
  148. package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/rendition.json +18 -0
  149. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/AVATAR.md +30 -0
  150. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/avatar.json +22 -0
  151. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/happy.png +0 -0
  152. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-half.png +0 -0
  153. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-open.png +0 -0
  154. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral.png +0 -0
  155. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/rendition.json +18 -0
  156. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/happy.png +0 -0
  157. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-half.png +0 -0
  158. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-open.png +0 -0
  159. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral.png +0 -0
  160. package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/rendition.json +18 -0
  161. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/AVATAR.md +30 -0
  162. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/avatar.json +22 -0
  163. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-half.png +0 -0
  164. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-open.png +0 -0
  165. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral.png +0 -0
  166. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/rendition.json +18 -0
  167. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/happy.png +0 -0
  168. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-half.png +0 -0
  169. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-open.png +0 -0
  170. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral.png +0 -0
  171. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/rendition.json +18 -0
  172. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/AVATAR.md +30 -0
  173. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/avatar.json +21 -0
  174. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/happy.png +0 -0
  175. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-half.png +0 -0
  176. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-open.png +0 -0
  177. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral.png +0 -0
  178. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/rendition.json +18 -0
  179. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/happy.png +0 -0
  180. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-half.png +0 -0
  181. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-open.png +0 -0
  182. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral.png +0 -0
  183. package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/rendition.json +18 -0
  184. package/vendor/packages/schemas/fixtures/avatar/invalid-no-avatar-json/AVATAR.md +30 -0
  185. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/AVATAR.md +30 -0
  186. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/avatar.json +22 -0
  187. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/happy.png +0 -0
  188. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-half.png +0 -0
  189. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-open.png +0 -0
  190. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral.png +0 -0
  191. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/rendition.json +18 -0
  192. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/happy.png +0 -0
  193. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-half.png +0 -0
  194. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-open.png +0 -0
  195. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral.png +0 -0
  196. package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/rendition.json +18 -0
  197. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/AVATAR.md +30 -0
  198. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/avatar.json +22 -0
  199. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/happy.png +0 -0
  200. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-half.png +0 -0
  201. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-open.png +0 -0
  202. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral.png +0 -0
  203. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/rendition.json +18 -0
  204. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/happy.png +0 -0
  205. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-half.png +0 -0
  206. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-open.png +0 -0
  207. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral.png +0 -0
  208. package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/rendition.json +18 -0
  209. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/AVATAR.md +30 -0
  210. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/avatar.json +22 -0
  211. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/happy.png +0 -0
  212. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-half.png +0 -0
  213. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-open.png +0 -0
  214. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral.png +0 -0
  215. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/rendition.json +18 -0
  216. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/happy.png +0 -0
  217. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-half.png +0 -0
  218. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-open.png +0 -0
  219. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral.png +0 -0
  220. package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/rendition.json +18 -0
  221. package/vendor/packages/schemas/fixtures/avatar/valid/AVATAR.md +30 -0
  222. package/vendor/packages/schemas/fixtures/avatar/valid/avatar.json +22 -0
  223. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/happy.png +0 -0
  224. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-half.png +0 -0
  225. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-open.png +0 -0
  226. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral.png +0 -0
  227. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/rendition.json +18 -0
  228. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/happy.png +0 -0
  229. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-half.png +0 -0
  230. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-open.png +0 -0
  231. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral.png +0 -0
  232. package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/rendition.json +18 -0
  233. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/AVATAR.md +30 -0
  234. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/avatar.json +23 -0
  235. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/happy.png +0 -0
  236. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-half.png +0 -0
  237. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-open.png +0 -0
  238. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral.png +0 -0
  239. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/rendition.json +18 -0
  240. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/happy.png +0 -0
  241. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-half.png +0 -0
  242. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-open.png +0 -0
  243. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral.png +0 -0
  244. package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/rendition.json +18 -0
  245. package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/AVATAR.md +28 -0
  246. package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/avatar.json +19 -0
  247. package/vendor/packages/schemas/fixtures/intake/invalid-duplicate-task/intake.json +8 -0
  248. package/vendor/packages/schemas/fixtures/intake/invalid-missing-submitted-at/intake.json +8 -0
  249. package/vendor/packages/schemas/fixtures/intake/invalid-target-exclusive/intake.json +8 -0
  250. package/vendor/packages/schemas/fixtures/intake/invalid-unknown-task/intake.json +8 -0
  251. package/vendor/packages/schemas/fixtures/intake/valid-draft/intake.json +8 -0
  252. package/vendor/packages/schemas/fixtures/intake/valid-submitted/intake.json +8 -0
  253. package/vendor/packages/schemas/fixtures/plan/invalid-bad-confidence-enum/plan.json +15 -0
  254. package/vendor/packages/schemas/fixtures/plan/invalid-constraint-bad-applies-to/plan.json +18 -0
  255. package/vendor/packages/schemas/fixtures/plan/invalid-dangling-media-path/plan.json +15 -0
  256. package/vendor/packages/schemas/fixtures/plan/invalid-duplicate-slot-id/plan.json +25 -0
  257. package/vendor/packages/schemas/fixtures/plan/invalid-missing-required-field/plan.json +14 -0
  258. package/vendor/packages/schemas/fixtures/plan/unsupported-version/plan.json +4 -0
  259. package/vendor/packages/schemas/fixtures/plan/valid/plan.json +40 -0
  260. package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.png +1 -0
  261. package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.wav +1 -0
  262. package/vendor/packages/schemas/fixtures/plan/valid/scaffold/broll.mp4 +1 -0
  263. package/vendor/packages/schemas/fixtures/plan/warns-confidence-gap/plan.json +28 -0
  264. package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-pass/plan-comments.json +6 -0
  265. package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-id-for-index-kind/plan-comments.json +13 -0
  266. package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-kind/plan-comments.json +13 -0
  267. package/vendor/packages/schemas/fixtures/plan-comments/invalid-comments-not-array/plan-comments.json +6 -0
  268. package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-comment-field/plan-comments.json +12 -0
  269. package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-version/plan-comments.json +5 -0
  270. package/vendor/packages/schemas/fixtures/plan-comments/unsupported-version/plan-comments.json +6 -0
  271. package/vendor/packages/schemas/fixtures/plan-comments/valid/plan-comments.json +19 -0
  272. package/vendor/packages/schemas/fixtures/plan-comments/valid-unknown-fields/plan-comments.json +15 -0
  273. package/vendor/packages/schemas/fixtures/recipe/invalid-bad-aspect/recipe.json +13 -0
  274. package/vendor/packages/schemas/fixtures/recipe/invalid-bad-confirmed-by/recipe.json +13 -0
  275. package/vendor/packages/schemas/fixtures/recipe/invalid-bad-name-casing/recipe.json +13 -0
  276. package/vendor/packages/schemas/fixtures/recipe/invalid-bad-workflow/recipe.json +13 -0
  277. package/vendor/packages/schemas/fixtures/recipe/invalid-duplicate-overlay-kind/recipe.json +13 -0
  278. package/vendor/packages/schemas/fixtures/recipe/invalid-empty-confirmed/recipe.json +9 -0
  279. package/vendor/packages/schemas/fixtures/recipe/invalid-empty-narration/recipe.json +13 -0
  280. package/vendor/packages/schemas/fixtures/recipe/invalid-missing-version/recipe.json +12 -0
  281. package/vendor/packages/schemas/fixtures/recipe/invalid-provenance-mismatch/recipe.json +15 -0
  282. package/vendor/packages/schemas/fixtures/recipe/invalid-source-project-path/recipe.json +13 -0
  283. package/vendor/packages/schemas/fixtures/recipe/unsupported-version/recipe.json +13 -0
  284. package/vendor/packages/schemas/fixtures/recipe/valid/recipe.json +15 -0
  285. package/vendor/packages/schemas/fixtures/recipe/valid-unknown-fields/recipe.json +16 -0
  286. package/vendor/packages/schemas/fixtures/review/invalid-malformed-canvas-target/review.json +6 -0
  287. package/vendor/packages/schemas/fixtures/review/invalid-malformed-doc-target/review.json +6 -0
  288. package/vendor/packages/schemas/fixtures/review/invalid-malformed-image-target/review.json +6 -0
  289. package/vendor/packages/schemas/fixtures/review/invalid-strokes-bad-space/review.json +6 -0
  290. package/vendor/packages/schemas/fixtures/review/invalid-strokes-canvas-rect-with-frame/review.json +6 -0
  291. package/vendor/packages/schemas/fixtures/review/invalid-strokes-image-rect-with-frame/review.json +6 -0
  292. package/vendor/packages/schemas/fixtures/review/invalid-video-null-sourcet/review.json +6 -0
  293. package/vendor/packages/schemas/fixtures/review/valid/review.json +8 -0
  294. package/vendor/packages/schemas/fixtures/review/valid-canvas-target/review.json +7 -0
  295. package/vendor/packages/schemas/fixtures/review/valid-input-session/review.json +6 -0
  296. package/vendor/packages/schemas/fixtures/review/valid-strokes/review.json +8 -0
  297. package/vendor/packages/schemas/intake.schema.json +117 -0
  298. package/vendor/packages/schemas/interpretation.schema.json +419 -0
  299. package/vendor/packages/schemas/package.json +18 -0
  300. package/vendor/packages/schemas/plan-comments.schema.json +52 -0
  301. package/vendor/packages/schemas/plan.schema.json +129 -0
  302. package/vendor/packages/schemas/recipe.schema.json +106 -0
  303. package/vendor/packages/schemas/research-plan.schema.json +230 -0
  304. package/vendor/packages/schemas/review.schema.json +227 -0
  305. package/vendor/packages/schemas/test/fixtures/asset/invalid-matched-by/audio/whoosh-transition/meta.json +31 -0
  306. package/vendor/packages/schemas/test/fixtures/asset/valid-catalog/audio/whoosh-transition/meta.json +31 -0
  307. package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/fragment.html +139 -0
  308. package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/meta.json +32 -0
  309. package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/preview.png +0 -0
  310. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-missing-ref/interpretation.json +131 -0
  311. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-ref-mismatch/interpretation.json +132 -0
  312. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-arc-empty-refs/interpretation.json +126 -0
  313. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-missing-interview/interpretation.json +126 -0
  314. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-null-intake/interpretation.json +133 -0
  315. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-dangling-arc-ref/interpretation.json +132 -0
  316. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-duplicate-asset-ref/interpretation.json +132 -0
  317. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-bad-type/interpretation.json +132 -0
  318. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-missing-evidence/interpretation.json +131 -0
  319. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-missing-required-field/interpretation.json +131 -0
  320. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answer-present-when-open/interpretation.json +133 -0
  321. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answered-without-answer/interpretation.json +131 -0
  322. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-dangling-target/interpretation.json +132 -0
  323. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-self-reference/interpretation.json +132 -0
  324. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-end-before-start/interpretation.json +132 -0
  325. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-mismatched-start-end/interpretation.json +131 -0
  326. package/vendor/packages/schemas/test/fixtures/interpretation/invalid-unknown-root-field/interpretation.json +133 -0
  327. package/vendor/packages/schemas/test/fixtures/interpretation/unsupported-version/interpretation.json +132 -0
  328. package/vendor/packages/schemas/test/fixtures/interpretation/valid/interpretation.json +132 -0
  329. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-bad-category-enum/research-plan.json +128 -0
  330. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-chapter-ref/research-plan.json +128 -0
  331. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-shot-list-ref/research-plan.json +128 -0
  332. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-decided-at-mismatch/research-plan.json +128 -0
  333. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-duplicate-candidate-id/research-plan.json +128 -0
  334. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-japan-sns-notes-empty/research-plan.json +128 -0
  335. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-missing-required-field/research-plan.json +127 -0
  336. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-selected-missing-candidate/research-plan.json +128 -0
  337. package/vendor/packages/schemas/test/fixtures/research-plan/invalid-structure-confirmed-mismatch/research-plan.json +128 -0
  338. package/vendor/packages/schemas/test/fixtures/research-plan/unsupported-version/research-plan.json +128 -0
  339. package/vendor/packages/schemas/test/fixtures/research-plan/valid/research-plan.json +79 -0
  340. package/vendor/packages/schemas/test/fixtures/research-plan/warns-empty-sources/research-plan.json +120 -0
  341. package/vendor/packages/schemas/test/validate-asset.test.mjs +38 -0
  342. package/vendor/packages/schemas/test/validate-avatar.test.mjs +109 -0
  343. package/vendor/packages/schemas/test/validate-captions.test.mjs +59 -0
  344. package/vendor/packages/schemas/test/validate-connections.test.mjs +31 -0
  345. package/vendor/packages/schemas/test/validate-edit.test.mjs +490 -0
  346. package/vendor/packages/schemas/test/validate-intake.test.mjs +66 -0
  347. package/vendor/packages/schemas/test/validate-interpretation.test.mjs +167 -0
  348. package/vendor/packages/schemas/test/validate-plan-comments.test.mjs +70 -0
  349. package/vendor/packages/schemas/test/validate-plan.test.mjs +67 -0
  350. package/vendor/packages/schemas/test/validate-recipe.test.mjs +107 -0
  351. package/vendor/packages/schemas/test/validate-research-plan.test.mjs +98 -0
  352. package/vendor/packages/schemas/test/validate-review.test.mjs +102 -0
  353. package/vendor/skills/.gitkeep +0 -0
  354. package/vendor/skills/address-review/SKILL.md +84 -0
  355. package/vendor/skills/address-review/bin/core/review-store.mjs +210 -0
  356. package/vendor/skills/address-review/bin/list.mjs +198 -0
  357. package/vendor/skills/address-review/bin/respond.mjs +89 -0
  358. package/vendor/skills/address-review/dev-fixtures/fixture-project/captions.json +22 -0
  359. package/vendor/skills/address-review/dev-fixtures/fixture-project/edit.json +12 -0
  360. package/vendor/skills/address-review/dev-fixtures/fixture-project/review.json +100 -0
  361. package/vendor/skills/address-review/test/review-store.test.mjs +201 -0
  362. package/vendor/skills/analyze-footage/SKILL.md +35 -0
  363. package/vendor/skills/analyze-footage/analysis-json.md +185 -0
  364. package/vendor/skills/analyze-footage/bin/person-matte/person-matte-helper.swift +343 -0
  365. package/vendor/skills/analyze-footage/bin/person-matte/person-matte.mjs +415 -0
  366. package/vendor/skills/analyze-footage/bin/speechanalyzer-helper.swift +138 -0
  367. package/vendor/skills/analyze-footage/bin/transcribe-cloud.mjs +486 -0
  368. package/vendor/skills/analyze-footage/bin/transcribe-sa.mjs +189 -0
  369. package/vendor/skills/analyze-footage/events-and-hooks.md +93 -0
  370. package/vendor/skills/analyze-footage/keyframes-and-review.md +130 -0
  371. package/vendor/skills/analyze-footage/media-and-transcript.md +219 -0
  372. package/vendor/skills/analyze-footage/person-matte.md +121 -0
  373. package/vendor/skills/analyze-footage/references/akari-data-contract.md +18 -0
  374. package/vendor/skills/analyze-footage/references/asset.meta.example.json +23 -0
  375. package/vendor/skills/analyze-footage/test/fixtures/scribe-punctuation-inflation.json +17 -0
  376. package/vendor/skills/analyze-footage/test/normalize-scribe.test.mjs +76 -0
  377. package/vendor/skills/analyze-footage/workflow.md +95 -0
  378. package/vendor/skills/analyze-project/SKILL.md +58 -0
  379. package/vendor/skills/analyze-project/collect.md +51 -0
  380. package/vendor/skills/analyze-project/decision-record.md +55 -0
  381. package/vendor/skills/analyze-project/interpretation.md +128 -0
  382. package/vendor/skills/analyze-project/interview.md +66 -0
  383. package/vendor/skills/analyze-project/references/interpretation-shape.md +42 -0
  384. package/vendor/skills/analyze-project/references/open-questions-examples.md +35 -0
  385. package/vendor/skills/analyze-project/validate-and-render.md +66 -0
  386. package/vendor/skills/bake-3d/SKILL.md +78 -0
  387. package/vendor/skills/compile-review-session/SKILL.md +78 -0
  388. package/vendor/skills/compile-review-session/bin/compile-review-session.mjs +799 -0
  389. package/vendor/skills/compile-review-session/bin/core/canvas-compiler.mjs +105 -0
  390. package/vendor/skills/compile-review-session/bin/core/compiler.mjs +221 -0
  391. package/vendor/skills/compile-review-session/bin/core/review-store.mjs +74 -0
  392. package/vendor/skills/compile-review-session/bin/core/time-mapping.mjs +370 -0
  393. package/vendor/skills/compile-review-session/bin/core/transcription.mjs +721 -0
  394. package/vendor/skills/compile-review-session/compilation-rules.md +98 -0
  395. package/vendor/skills/compile-review-session/dev-fixtures/README.md +24 -0
  396. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/audio.wav +0 -0
  397. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/edit.snapshot.json +12 -0
  398. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/events.jsonl +2 -0
  399. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/session.json +11 -0
  400. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/audio.wav +0 -0
  401. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/edit.snapshot.json +12 -0
  402. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/events.jsonl +5 -0
  403. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/session.json +11 -0
  404. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/audio.wav +0 -0
  405. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/edit.snapshot.json +12 -0
  406. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/events.jsonl +19 -0
  407. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/session.json +11 -0
  408. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/audio.wav +0 -0
  409. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/edit.snapshot.json +12 -0
  410. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/events.jsonl +2 -0
  411. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/session.json +11 -0
  412. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0005/session.json +1 -0
  413. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/audio.wav +0 -0
  414. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/events.jsonl +2 -0
  415. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/session.json +11 -0
  416. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/audio.wav +0 -0
  417. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/edit.snapshot.json +13 -0
  418. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/events.jsonl +9 -0
  419. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/session.json +11 -0
  420. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/audio.wav +0 -0
  421. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/edit.snapshot.json +12 -0
  422. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/events.jsonl +2 -0
  423. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/session.json +11 -0
  424. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/transcript.json +9 -0
  425. package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review.json +7 -0
  426. package/vendor/skills/compile-review-session/test/canvas-compiler.test.mjs +283 -0
  427. package/vendor/skills/compile-review-session/test/compiler.test.mjs +458 -0
  428. package/vendor/skills/create-project/SKILL.md +46 -0
  429. package/vendor/skills/create-project/bin/create-project.mjs +88 -0
  430. package/vendor/skills/edit-lint/SKILL.md +73 -0
  431. package/vendor/skills/edit-plan/SKILL.md +64 -0
  432. package/vendor/skills/edit-plan/approvals-and-generation.md +106 -0
  433. package/vendor/skills/edit-plan/avatar-resolution.md +241 -0
  434. package/vendor/skills/edit-plan/beat-sync.md +545 -0
  435. package/vendor/skills/edit-plan/beats.md +197 -0
  436. package/vendor/skills/edit-plan/emphasis-detection.md +366 -0
  437. package/vendor/skills/edit-plan/execution.md +157 -0
  438. package/vendor/skills/edit-plan/expression-selection.md +290 -0
  439. package/vendor/skills/edit-plan/plan-json.md +52 -0
  440. package/vendor/skills/edit-plan/recipe.md +74 -0
  441. package/vendor/skills/edit-plan/references/asset.decisions.example.json +12 -0
  442. package/vendor/skills/edit-plan/references/event.example.json +7 -0
  443. package/vendor/skills/edit-plan/report-guide.md +192 -0
  444. package/vendor/skills/edit-plan/workflow.md +108 -0
  445. package/vendor/skills/generate-narration/SKILL.md +40 -0
  446. package/vendor/skills/generate-narration/assets/reading-script-v1.md +18 -0
  447. package/vendor/skills/generate-narration/avatar-voice.md +54 -0
  448. package/vendor/skills/generate-narration/bin/generate-narration.mjs +572 -0
  449. package/vendor/skills/generate-narration/engines.md +78 -0
  450. package/vendor/skills/generate-narration/reading-text.md +36 -0
  451. package/vendor/skills/generate-narration/voice-profile-setup.md +77 -0
  452. package/vendor/skills/harvest-asset/SKILL.md +132 -0
  453. package/vendor/skills/manage-connections/SKILL.md +75 -0
  454. package/vendor/skills/manage-connections/bin/doctor.mjs +341 -0
  455. package/vendor/skills/overlay-authoring/3d.md +143 -0
  456. package/vendor/skills/overlay-authoring/SKILL.md +30 -0
  457. package/vendor/skills/overlay-authoring/motion.md +58 -0
  458. package/vendor/skills/overlay-authoring/table.md +41 -0
  459. package/vendor/skills/overlay-authoring/telop.md +69 -0
  460. package/vendor/skills/overlay-authoring/text-behind-person.md +224 -0
  461. package/vendor/skills/overlay-authoring/thumbnail.md +126 -0
  462. package/vendor/skills/render-cut/SKILL.md +66 -0
  463. package/vendor/skills/research-plan/SKILL.md +75 -0
  464. package/vendor/skills/research-plan/competitor.md +50 -0
  465. package/vendor/skills/research-plan/ideate.md +56 -0
  466. package/vendor/skills/research-plan/shotlist.md +46 -0
  467. package/vendor/skills/research-plan/storyboard.md +48 -0
  468. package/vendor/skills/research-plan/trends.md +33 -0
  469. package/vendor/skills/setup-audio-library/SKILL.md +93 -0
  470. package/vendor/skills/setup-audio-library/candidate-list.md +72 -0
  471. package/vendor/skills/setup-audio-library/drop-folder.md +72 -0
  472. package/vendor/skills/setup-audio-library/gallery.md +43 -0
  473. package/vendor/skills/setup-library/SKILL.md +33 -0
  474. package/vendor/skills/setup-library/fetch-and-validate.md +102 -0
  475. package/vendor/skills/setup-library/starter-pack.md +55 -0
  476. package/vendor/skills/setup-library/tools-check.md +83 -0
  477. package/vendor/skills/verify/SKILL.md +137 -0
  478. package/vendor/templates/project-default/.akari/cache/.gitkeep +0 -0
  479. package/vendor/templates/project-default/.akari/connections.json +233 -0
  480. package/vendor/templates/project-default/.akari/diffs/.gitkeep +1 -0
  481. package/vendor/templates/project-default/.akari/events/.gitkeep +1 -0
  482. package/vendor/templates/project-default/.akari/reports/.gitkeep +0 -0
  483. package/vendor/templates/project-default/.akari/sidecars/.gitkeep +1 -0
  484. package/vendor/templates/project-default/.akari/work/.gitkeep +0 -0
  485. package/vendor/templates/project-default/.akari/workflow.json +48 -0
  486. package/vendor/templates/project-default/.claude/settings.json +15 -0
  487. package/vendor/templates/project-default/.claude/skills/README.md +26 -0
  488. package/vendor/templates/project-default/AGENTS.md +49 -0
  489. package/vendor/templates/project-default/CLAUDE.md +35 -0
  490. package/vendor/templates/project-default/assets/.gitkeep +1 -0
  491. package/vendor/templates/project-default/exports/.gitkeep +1 -0
  492. package/vendor/templates/project-default/planning/.gitkeep +1 -0
@@ -0,0 +1,72 @@
1
+ # 候補リスト HTML の生成
2
+
3
+ ## 1. いつ実行するか
4
+
5
+ - 初回セットアップ時
6
+ - `catalog/audio/candidates.json` を更新したとき(新しい配布元・カテゴリの追記)
7
+ - 他レーン(audio-import 等)が `catalog/audio/` に新しいエントリを登録したあと
8
+ (既所有のグレーアウトを最新化するため)
9
+
10
+ ## 2. 実行する
11
+
12
+ ```sh
13
+ node packages/audio-library-setup/bin/generate-candidates-html.mjs
14
+ ```
15
+
16
+ 既定の出力先は `catalog/audio/candidates.html`。引数は次を上書きできる。
17
+
18
+ ```sh
19
+ node packages/audio-library-setup/bin/generate-candidates-html.mjs \
20
+ --candidates catalog/audio/candidates.json \
21
+ --catalog-dir catalog/audio \
22
+ --out catalog/audio/candidates.html
23
+ ```
24
+
25
+ 生成後、ユーザーへ `open catalog/audio/candidates.html`(または生成された絶対パス)を
26
+ 案内してブラウザで開いてもらう。
27
+
28
+ ## 3. 何が起きるか
29
+
30
+ - `catalog/audio/candidates.json` の 68 候補カード(カテゴリ 11 種、うち BGM 27 カード・
31
+ 収録曲換算 約110曲)をカードとして並べる
32
+ - 各カードのリンクは**ダウンロードページ URL のみ**(`target="_blank"`)。クリックすると
33
+ 配布元の正規ページが新規タブで開くだけで、音声ファイルは一切取得しない
34
+ - **「既所有」判定はスクリプト実行のたびに `catalog/audio/*/meta.json` を読んで動的に
35
+ 計算する。** 完全一致する `source.url` を持つエントリがあれば「既所有」としてグレー
36
+ アウト、hostname だけ一致する場合は「同配布元から登録あり」と表示する。
37
+ 他レーンの登録がハードコードなしに反映されるのはこのため
38
+ - 各カードに confidence バッジ(本レーンで実在確認済み/リサーチ時点で確認済み/
39
+ 自動検証不能・要手動確認)とライセンスバッジ(クレジット要否・AI学習可否)を表示する
40
+ - **BGM(`bgm-calm` / `bgm-uplift` / `bgm-other` の3カテゴリ、計27カード)は追加で
41
+ `mood[]` / `tempo` バッジを表示する。** `mood` は intake の tone チップ(`真面目`・
42
+ `親しみ`・`高級感`・`勢い`・`かわいい`・`無機質`・`エモい`・`シネマ`)と同一語彙で、
43
+ 各 tone に最低 2 曲を大きく上回る割り当てがある(`catalog/audio/candidates.json` の
44
+ `mood_vocabulary` 参照)。複数曲を束ねるカードは `songs[]` を持ち、カード内に
45
+ 「収録曲 N 件」の折りたたみリストとして曲ごとの mood/tempo を表示する。将来 intake の
46
+ tone 決定結果と `mood[]` を突き合わせて BGM を自動提案するための布石であり、
47
+ 自動選曲ロジック自体は本スキルの対象外(提示のみ)
48
+ - 3カテゴリの構成比は「落ち着き系(bgm-calm)6割・盛り上げ系(bgm-uplift)3割・
49
+ 補完(bgm-other)1割」を目安にしている(オーナー指示)。`songs[]` の個別曲は
50
+ DOVA-SYNDROME・MusMus・魔王魂・甘茶の音楽工房の一覧/ランキングページから
51
+ 「よく使われている」ものを優先収集しており、全曲の個別ページ確認はしていない
52
+ (カテゴリ/ランキングページ単位の確認 + confidence マークで正直に表示)
53
+ - `credit_template` を持つ候補(MusMus・魔王魂 等、クレジット表記必須の配布元)は、
54
+ 規約に書かれている書式そのままの文言をカードに表示する。ユーザーが編集時に
55
+ そのままコピーして使える正確さを優先し、要約や言い換えをしない
56
+
57
+ ## 4. ユーザーへの案内文言(テンプレート)
58
+
59
+ ```text
60
+ 音源の候補リストを用意しました: catalog/audio/candidates.html
61
+ 「ダウンロードページを開く」を押すと配布元の正規ページが開きます。実際の保存は
62
+ あなた自身で行ってください。保存先は ~/.akari/audio-drop/
63
+ (無ければ作成してください)に置くと、次に登録スクリプトを実行したときに自動で
64
+ 拾われます。
65
+ ```
66
+
67
+ ## よくある間違い
68
+
69
+ - 生成した HTML のリンクを音声ファイルの直 URL に書き換える(直リンク禁止規約への
70
+ 抵触リスク)。
71
+ - 「既所有」を静的にハードコードする(他レーンの登録が反映されなくなる)。
72
+ - confidence が `blocked_unverifiable` の項目を「確認済み」であるかのように表示する。
@@ -0,0 +1,72 @@
1
+ # ドロップフォルダ監視・登録
2
+
3
+ [candidate-list.md](candidate-list.md) でユーザーが実際にダウンロードしたあと、
4
+ このリーフでファイル単位の照合・登録を行う。
5
+
6
+ ## 1. ドロップフォルダの場所
7
+
8
+ 既定は `~/.akari/audio-drop/`(2026-07-25 第三裁定でプロジェクト外置き場所の基底を
9
+ `~/.akari/` に統一。`~/.config/akari-video/credentials.env` や
10
+ `~/.config/akari-video/voice-profiles/` は認証情報の置き場として別論点のため現状維持
11
+ — いずれも user レベル・git 管理外の置き場である点は共通)。
12
+ ユーザーがブラウザでダウンロードしたファイルを、そのままこのフォルダへ移動・保存して
13
+ もらう。`~/Downloads` を直接監視しない(無関係なダウンロードと混在し誤登録するリスクを
14
+ 避けるため、音源専用の場所を切る)。
15
+
16
+ ## 2. まず plan-only で確認する(既定・安全)
17
+
18
+ ```sh
19
+ node packages/audio-library-setup/bin/register-drop-folder.mjs \
20
+ --drop-dir ~/.akari/audio-drop
21
+ ```
22
+
23
+ `--apply` を付けない限り**ファイルは一切動かず、catalog にも一切書き込まない**。
24
+ 標準出力の JSON(`matched_candidates` / `quarantined`)をユーザーに見せ、想定通りかを
25
+ 確認する。
26
+
27
+ ## 3. 問題なければ `--apply` で実行する
28
+
29
+ ```sh
30
+ node packages/audio-library-setup/bin/register-drop-folder.mjs \
31
+ --drop-dir ~/.akari/audio-drop --apply
32
+ ```
33
+
34
+ - **一致したファイル**: `~/.akari/assets/audio/<candidate-id>/` (user スコープ、
35
+ [setup-library/fetch-and-validate.md](../setup-library/fetch-and-validate.md) と同じ
36
+ スコープ階層)へ実体を移動し、`meta.json`(実体あり・`remote` キーなし)を書く。
37
+ 同時に `catalog/audio/<candidate-id>/meta.json`(`remote: true` の参照 SSOT)が
38
+ 無ければ作る。**既にあれば上書きしない**(ハードルール 6)。
39
+ `ffmpeg` があれば波形 `preview.png` を生成する(無ければ生成せず理由をログに残す。
40
+ 実物と違う mock を作らない)。
41
+ - **一致しなかったファイル**: ドロップフォルダ内の `_quarantine/` へ移動し、
42
+ `_quarantine/manifest.json` に「出典不明」として記録する(audio-import レーンと同じ
43
+ 規律)。ファイル名からの推測登録はしない。
44
+ - **複数候補に一致してしまう場合**: 一意に決定できないため隔離する(推測しない)。
45
+
46
+ 再実行は idempotent(同名ファイルは二重移動しない・`manifest.json` に重複エントリを
47
+ 増やさない)。
48
+
49
+ ## 4. マッチングの限界(正直に伝える)
50
+
51
+ ファイル名照合が機能するのは、候補データに `expected_filenames` /
52
+ `filename_patterns` が入っている「個別ファイル名まで特定できた候補」(効果音ラボ・
53
+ OtoLogic の一部)だけ。DOVA-SYNDROME・Pixabay・Freesound のタグ/検索ページ候補は
54
+ ユーザーが保存時に付けるファイル名が予測できないため、自動照合できず `_quarantine/`
55
+ に入る。この場合は audio-import レーンの前例にならい、`_quarantine/manifest.json` を
56
+ 見ながらユーザーに出典を確認し、`catalog/audio/candidates.json` の該当候補に
57
+ `expected_filenames` を追記するか、手で `catalog/audio/<id>/meta.json` を作る。
58
+
59
+ ## 5. 検証
60
+
61
+ ```sh
62
+ node packages/schemas/bin/validate-asset.mjs ~/.akari/assets/audio/<candidate-id>
63
+ ```
64
+
65
+ 失敗したら理由(大抵は `preview.png` 未生成 = ffmpeg 不在)をそのまま報告する。
66
+
67
+ ## よくある間違い
68
+
69
+ - `--apply` を付けずに「登録した」と報告する(plan-only は何も変更しない)。
70
+ - 複数候補に一致するファイルをどちらかに決め打ちで登録する。
71
+ - 既存の `catalog/audio/<id>/meta.json` を上書きする。
72
+ - `_quarantine/` の存在を無視し、出典不明ファイルを放置したまま完了報告する。
@@ -0,0 +1,43 @@
1
+ # 試聴ギャラリー(keep / drop)
2
+
3
+ [drop-folder.md](drop-folder.md) で登録された音源を、実際に聴きながら keep/drop を
4
+ 決めるためのローカルギャラリー。decision-cards / intake-form と同じ流儀(`127.0.0.1`
5
+ のみ・外部 npm 依存ゼロ・状態は JSON サイドカーへ atomic 書き込み)。
6
+
7
+ ## 1. 起動する
8
+
9
+ ```sh
10
+ node packages/audio-library-setup/bin/gallery-helper.mjs \
11
+ --library-root ~/.akari/assets/audio
12
+ ```
13
+
14
+ 起動すると `HELPER: http://localhost:<port>/` を標準出力に出す。ユーザーへそのまま
15
+ 提示し、ブラウザで開いてもらう。
16
+
17
+ ## 2. 画面で分かること
18
+
19
+ - `~/.akari/assets/audio/<id>/meta.json` を持つ登録済みエントリを一覧表示する
20
+ (`meta.json` はあるが再生可能な音声実体が無いエントリは表示しない)
21
+ - 各エントリの音声ファイルを `<audio controls>` でその場再生できる
22
+ (`/media/<id>/<filename>` 経由でのみ配信。ライブラリ外のファイルは配信しない)
23
+ - ライセンスバッジ(要クレジット/クレジット不要/AI学習禁止)に加え、`meta.json` に
24
+ `mood[]` / `tempo` があればそれもバッジ表示する(2026-07-22 tasks/audio-fetch-gallery で追加)
25
+ - 画面上部の入力欄で id / タイトルを絞り込み検索できる
26
+ - 「keep 一覧をコピー」ボタンで、現在 keep 判定済みの id を JSON 配列としてクリップボードへ
27
+ コピーできる(オーナーがフィードバックとして他ツールへ貼り付ける用途)
28
+ - keep / drop ボタンで決定を記録する。決定は `~/.akari/assets/audio/_gallery-state.json`
29
+ へ即時保存される(ページを閉じても消えない)。もう一度同じボタンを押すと決定を解除する
30
+
31
+ ## 3. keep / drop の扱い
32
+
33
+ このスキルは keep/drop の**記録**までを行う。`drop` にした素材の実ファイル削除や、
34
+ `assets/audio/INDEX.md` への反映は別途人間の判断で行う(自動削除しない。取り違えた
35
+ 決定を戻せなくする操作を勝手に実行しない)。
36
+
37
+ ## よくある間違い
38
+
39
+ - ギャラリーサーバを `0.0.0.0` 等、ローカル以外にバインドする。
40
+ - `_gallery-state.json` を手で編集して整合性を崩す(サーバ経由の atomic 書き込みに
41
+ 一本化する)。
42
+ - keep/drop の記録だけで「ライブラリ整理が完了した」と報告する(実ファイルの削除・
43
+ INDEX 反映は別工程)。
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: setup-library
3
+ description: AKARI Video を初めてセットアップするとき、または現在のプロジェクトに使える素材が足りず新しく揃えたいときに発動する。ffmpeg / whisper-cli / headless Chrome の道具チェック、catalog/ を読んだスターターパック提案、人間の明示承認、取得・配置・検証・INDEX 更新までを一気通貫で行う first-run スキル。
4
+ ---
5
+
6
+ # FORBIDDEN 級ハードルール
7
+
8
+ > **Language**: Respond in the user's language — 対話・質問・承認確認・レポートはユーザーの使用言語に合わせる(例: 英語で話しかけられたら英語で応答する)。
9
+
10
+ 次のいずれかに違反する形で素材セットアップを進めない。詳細リーフより常に優先する。
11
+
12
+ 1. **人間の明示承認なしに取得・購入・ログインを実行しない。** 承認前に catalog エントリを `assets/` へ書き込まない。
13
+ 2. **在庫を捏造しない。** `catalog/` に存在しないカテゴリ・エントリ・URL・ライセンス表記を提案・記録しない。カタログが空、または該当カテゴリが未整備なら「提案できる素材がない」と正直に報告する。
14
+ 3. **license が確定しない素材を `assets/` へ入れない。** `source.license_at_source` を鵜呑みにせず、確認できた範囲だけを書く。確定できなければ配置を止める。
15
+ 4. **`acquisition: login` / `purchase` はエージェントが代理取得しない。** URL を提示してユーザー自身に取得させ、置き場所を確認してから次工程へ進む。
16
+ 5. **`assets/` 配置後に `remote` フラグを残さない。** 実体が揃っていないのに `assets/` 側で「配置完了」と報告しない。
17
+ 6. **`attribution_required` が true の素材は記録を省略しない。** `assets/<category>/INDEX.md` への明記と、プロジェクト側クレジットが必要になる旨のユーザーへの明示を必須とする。
18
+ 7. **`node packages/schemas/bin/validate-asset.mjs` を通さずに「検証済み」と報告しない。**
19
+ 8. **既存の `assets/<category>/<id>/` を無断で上書きしない。** id が衝突したら内容を比較し、人間の判断を仰ぐ。
20
+
21
+ # 実行順リーフ
22
+
23
+ 1. [tools-check.md](tools-check.md) — ffmpeg / whisper-cli / headless Chrome の実在確認
24
+ 2. [starter-pack.md](starter-pack.md) — `catalog/INDEX.md` を読み、用途を聞き、スターターパックを提案して承認を得る
25
+ 3. [fetch-and-validate.md](fetch-and-validate.md) — 承認された素材だけを取得し、`assets/` へ配置、検証、`INDEX.md` 更新
26
+
27
+ 詳細を先読みせず、現在の工程に対応するファイルだけを読む。承認が得られていない工程を先に進めない。
28
+
29
+ ## 根拠
30
+
31
+ - 契約: [`docs/contract-2026-07-13-asset-library.md`](../../docs/contract-2026-07-13-asset-library.md)「カタログと取得スキル」§
32
+ - 素材化・meta.json v0 の詳細規律: [../harvest-asset/SKILL.md](../harvest-asset/SKILL.md)
33
+ - authoring hard rules: [../overlay-authoring/SKILL.md](../overlay-authoring/SKILL.md)
@@ -0,0 +1,102 @@
1
+ # 取得・配置・検証・INDEX 更新
2
+
3
+ [starter-pack.md](starter-pack.md) で明示承認を得た catalog エントリだけを対象にする。承認されていない id を一緒に取得しない。
4
+
5
+ ## 1. 取得する(acquisition ごとに分岐)
6
+
7
+ ### acquisition: direct
8
+
9
+ エージェントが `curl` 等で取得してよい。
10
+
11
+ ```sh
12
+ curl -fsSL "<source.url または直接ファイル URL>" -o "<作業ディレクトリ>/<file>"
13
+ ```
14
+
15
+ - 取得直後にファイル種別・サイズを確認する(`file`, `ls -la`)。想定外の HTML エラーページ等を実体と誤認しない。
16
+ - `source.license_at_source` を出発点にしつつ、取得元ページで実際に確認できる範囲のライセンス表記と突き合わせる。矛盾したら取得を止めて報告する。
17
+
18
+ ### acquisition: login / purchase
19
+
20
+ エージェントは取得しない。次をユーザーへ提示する。
21
+
22
+ - `source.url`(取得先ページ)
23
+ - 必要な手続き(会員登録・購入)の概要(catalog 側に書かれている範囲で。無い情報を推測で補わない)
24
+ - 「取得したら、どこに置きましたか?」を聞き、ユーザーが答えたローカルパスを次工程の入力にする
25
+
26
+ ## 2. 選ばれたスコープの assets/<category>/<id>/ へ配置する
27
+
28
+ 配置前に**登録先スコープ**をユーザーに確認する(契約「アセットのスコープ階層」参照): `user`(`~/.akari/assets/`、全プロジェクト共通 — スターターパックの既定候補)/ `local`(プロジェクト内 `assets/`)/ `shared`(上位ディレクトリの `.akari/assets/`)/ `builtin`(製品リポの `assets/` — 開発者がライブラリ自体を育てる場合のみ)。以降の `assets/...` 表記は選ばれた層のルートを指す。
29
+
30
+ 既存の同名ディレクトリがあれば上書きしない。内容を比較し、更新か新 id かの明示判断を人間から得る([harvest-asset](../harvest-asset/SKILL.md) と同じ規律)。
31
+
32
+ 取得した実体の性質によって以降の作業量が異なる。
33
+
34
+ - **authoring 不要な素材**(audio・broll など、取得した実体そのものが完成品): meta.json をほぼそのまま複製し、下記の変更点だけ反映する。
35
+ - **authoring が必要な素材**(3d モデル単体、書体ファイル単体など、`fragment.html` や `@font-face` 定義がまだ無いもの): [harvest-asset](../harvest-asset/SKILL.md) 2 節と同じ手順(CSS 変数 → knobs、依存 → requires の自動抽出)を踏んでから配置する。catalog の meta.json はあくまで下書きの出発点として扱う。
36
+
37
+ 最低限そろえる: 実体ファイル + `meta.json` + `preview.png`。`preview.png` はカテゴリに応じて [harvest-asset](../harvest-asset/SKILL.md) 4 節の手順(HTML は headless Chrome、3D は代表 pose、B-roll は `ffmpeg` の代表フレーム、audio は waveform)で作る。生成できなければ理由を残し、実体と違う mock を preview として作らない。
38
+
39
+ ### meta.json の書き方
40
+
41
+ catalog 側の `meta.json` をベースに、次を変更する。
42
+
43
+ 1. **`remote` キーを外す(削除する)。** 実体が揃った素材はカタログ専用フラグを持たない。既存の `assets/` 内の他素材も `remote` フィールドを持たない。
44
+ 2. **`provenance.origin` にカタログ由来である旨と取得元を記録する(必須)。** 例:
45
+ `"catalog/<category>/<id> 由来 / 取得元: <source.url> / acquisition: <direct|login|purchase> / license_at_source: <...> / 取得日: YYYY-MM-DD"`
46
+ 分からない値を埋めない。取得日は実行日で確定する。
47
+ 3. `source` ブロックは残してもよい(schema 上、`remote` が無くても `source` object は valid)。機械可読な取得記録として残す場合は保持し、`source.url` は実際に取得したファイル/ページの URL に合わせて更新する。不要なら削除してよい。必須なのは 1・2 のみ。
48
+ 4. `license` / `tags` / `title` / `description` / `when_to_use` / `ai_usage` / `knobs` / `requires` / `author` / `price` は catalog 側の値を土台にする。authoring が必要な素材では、実際に作った `fragment.html` の CSS 変数・依存と食い違っていないか確認してから確定する。license が確定しない場合は `assets/` へ入れない。
49
+
50
+ ### font カテゴリの特例
51
+
52
+ フォントは再配布ライセンスが同梱を許さないことが多い。
53
+
54
+ - ライセンスが redistribution / embedding を明示的に許可する場合(OFL 系の多くの Google Fonts 等)だけ、バイナリを `assets/font/<id>/` へ実体として配置し、`remote` を外す。
55
+ - 許可が確認できない場合、バイナリを `assets/` へコピーしない。`remote: true` を維持したまま、`ai_usage` にユーザーの実際のインストール先(OS フォントディレクトリ等)を記録し、`fragment.html` 側は `@font-face` でユーザー環境のフォント名を前提にする設計に留める。
56
+
57
+ ## 3. attribution_required を記録する
58
+
59
+ `source.attribution_required` または `license.attribution_required` が true の場合、次の両方を行う。
60
+
61
+ - `assets/<category>/INDEX.md` の該当行に「要クレジット」等、attribution が必要である旨を明記する。
62
+ - ユーザーへ「この素材を書き出しに使う際は、プロジェクト側(エンドロール等)にクレジット表記が必要」と明示的に伝える。自動挿入は将来仕様であり、今は記録と告知のみ行う。
63
+
64
+ ## 4. validator で検証する
65
+
66
+ ```sh
67
+ node packages/schemas/bin/validate-asset.mjs "assets/<category>/<id>"
68
+ ```
69
+
70
+ 失敗したら `meta.json`、最小 3 点セット、category 一致、相対参照、INDEX を直し、成功するまで再実行する。`packages/schemas/bin/validate-asset.mjs` または `packages/schemas/asset-meta.schema.json` が無い場合は成功扱いにせず、成果報告に次をそのまま残す。
71
+
72
+ ```text
73
+ 後で実行: node packages/schemas/bin/validate-asset.mjs(validator / schema 作成後)
74
+ ```
75
+
76
+ ## 5. assets/<category>/INDEX.md を更新する
77
+
78
+ harvest-asset と同じ書式で 1 行追加する。
79
+
80
+ ```text
81
+ <id> — <何で、どんな場面向けかを一文で>(要クレジットなど注記があれば併記)
82
+ ```
83
+
84
+ 重複行を作らない。新 category(font 等、`assets/` 側にまだ存在しないディレクトリ)を初めて作るときだけ `assets/INDEX.md` にもカテゴリ説明を追加する。
85
+
86
+ ## よくある間違い
87
+
88
+ - ライセンスが未確認・不明確なまま取得を実行する(catalog の `license_at_source` を鵜呑みにし、取得元での実際の表記を確認しない)。
89
+ - attribution_required の記録漏れ(INDEX にもユーザーにも伝えない)。
90
+ - catalog の meta.json をそのまま `assets/<category>/<id>/meta.json` としてコピーし、`remote: true` が残る。
91
+ - `login` / `purchase` のカタログエントリをエージェントが代理で取得しようとする。
92
+ - フォントの再配布可否を確認せず、`assets/font/<id>/` へバイナリを無条件コピーする。
93
+ - validator を通さず「配置完了」と報告する。
94
+ - 承認されていない catalog エントリまで一緒に取得する。
95
+ - 既存 `assets/` の同名ディレクトリを黙って上書きする。
96
+ - 3d / font など authoring が必要な素材を、catalog の meta.json をそのまま流用して「完成」と扱う(knobs・requires が実体と食い違ったまま残る)。
97
+
98
+ ## 根拠
99
+
100
+ - 契約: [`docs/contract-2026-07-13-asset-library.md`](../../docs/contract-2026-07-13-asset-library.md)「カタログと取得スキル」§
101
+ - 素材化・meta.json v0 の詳細規律: [../harvest-asset/SKILL.md](../harvest-asset/SKILL.md)
102
+ - authoring hard rules: [../overlay-authoring/SKILL.md](../overlay-authoring/SKILL.md)
@@ -0,0 +1,55 @@
1
+ # カタログ閲覧とスターターパック提案
2
+
3
+ ## 1. catalog/INDEX.md から辿る
4
+
5
+ `catalog/INDEX.md` → 各カテゴリの `catalog/<category>/INDEX.md` → 個々の `catalog/<category>/<id>/meta.json`(`remote: true`)の順で読む。`assets/` の LLM Wiki と同じ経路を踏む。
6
+
7
+ カテゴリが「整備中」で `INDEX.md` にエントリ行が無い場合、そのカテゴリに提案できる素材はまだ無いとそのまま報告する。「後で追加予定」という記述を在庫の代わりに提案しない。存在しない id・url・license を発明しない。
8
+
9
+ 既存の `assets/<category>/INDEX.md` も合わせて確認し、同種の素材が既にローカルにあるなら重複提案しない。
10
+
11
+ ## 2. ユーザーの用途を聞く
12
+
13
+ 導出できない情報は必ず聞く。提案前に次を確認する。
14
+
15
+ - 動画のジャンル・シーン(例: 製品デモ、インタビュー、B-roll 補完、テロップ強化)
16
+ - 想定アスペクト比(16:9 / 9:16 / 両方)
17
+ - 予算感(無料のみか、`acquisition: purchase` を含めてよいか)
18
+ - ログインが要る取得元(`acquisition: login`)を許容するか
19
+
20
+ ## 3. CC0 優先でスターターパックを組む
21
+
22
+ 契約の CC0 ファースト方針に従う。
23
+
24
+ - `source.license_at_source` が CC0 相当(帰属表示不要・商用利用可・改変可)のエントリを優先する
25
+ - `source.attribution_required: true` のエントリを含めてもよいが、提案時に必ず明示する
26
+ - `source.acquisition` が `login` / `purchase` のエントリは、ユーザーが許容した場合のみ候補に含める
27
+ - 実際に `catalog/` に存在するエントリだけを列挙する
28
+
29
+ ## 4. 提案フォーマット
30
+
31
+ カテゴリごとに、id・タイトル・license_at_source・acquisition・一言理由を並べて提示する。
32
+
33
+ ```text
34
+ [telop] lower-third-clean は既存 assets/ に既にあるため対象外。
35
+ [font] <id> — <title>(license: CC0 1.0 / acquisition: direct)— 日本語見出し向け
36
+ [3d] <id> — <title>(license: CC-BY 4.0 / acquisition: direct / ⚠ attribution 必須)— 製品モックアップ
37
+ ```
38
+
39
+ `⚠ attribution 必須` などの注記は省略しない。ユーザーが一覧だけ見て許容判断できる情報量にする。
40
+
41
+ ## 5. 人間の明示承認を得る
42
+
43
+ 「この一覧のうち、どれを取得しますか?」と問い、YES/NO または対象の絞り込みを明示的に得る。承認が得られるまで [fetch-and-validate.md](fetch-and-validate.md) の工程へ進まない。
44
+
45
+ - 返信の話題転換・沈黙を承認とみなさない
46
+ - 一部だけ承認された場合、承認された id だけを次工程の対象にする
47
+ - 承認内容(対象 id 一覧)を次工程へそのまま引き継ぐ
48
+
49
+ ## よくある間違い
50
+
51
+ - `catalog/` に存在しないカテゴリ・エントリを、需要に応えるためだけに提案する。
52
+ - ユーザーの用途を聞かずに「とりあえず全部」提案する。
53
+ - `attribution_required` や `acquisition: purchase` を隠して、または注記なしで提示する。
54
+ - 明示的な YES を得ずに「承認されたはず」で次工程へ進む。
55
+ - 既に `assets/` にある素材と同種のものを重複提案する。
@@ -0,0 +1,83 @@
1
+ # 道具チェック
2
+
3
+ 素材取得より前に実行する。3 つの道具の実在は宣言だけで済ませず、実際にコマンドを走らせて確認する。パスの存在を推測で報告しない。
4
+
5
+ ## ffmpeg
6
+
7
+ ```sh
8
+ command -v ffmpeg && ffmpeg -version | head -1
9
+ ```
10
+
11
+ 用途: 取得した broll / audio 素材の preview frame・waveform 抽出([harvest-asset](../harvest-asset/SKILL.md) 4 節と同じ手順)、fetch した動画・音声の実体確認。
12
+
13
+ なければ: 導入コマンド(`brew install ffmpeg` 等)をユーザーに提示するだけに留める。エージェントが無断で環境変更を実行しない。
14
+
15
+ ## whisper-cli(whisper.cpp)
16
+
17
+ 実行ファイルとモデルは別々に確認する。探索順は [analyze-footage/media-and-transcript.md](../analyze-footage/media-and-transcript.md) と揃える。
18
+
19
+ 実行ファイル探索順:
20
+
21
+ 1. 明示指定(`$AKARI_WHISPER_BIN` 等)があれば最優先
22
+ 2. PATH 上の `whisper-cli`
23
+ 3. リポジトリ内/隣接する whisper.cpp checkout の `build/bin/whisper-cli`
24
+
25
+ ```sh
26
+ command -v whisper-cli && whisper-cli -h | head -5
27
+ ```
28
+
29
+ モデル探索順(実行ファイルが見つかったときだけ確認する):
30
+
31
+ 1. 明示指定
32
+ 2. リポジトリ内 `models/` / `whisper.cpp/models/`
33
+ 3. `$HOME/.cache/whisper.cpp/`
34
+ 4. `$HOME/Library/Caches/whisper.cpp/`
35
+ 5. Homebrew `whisper-cpp` の share ディレクトリ
36
+ 6. VoiceInk の保存先: `$HOME/Library/Application Support/com.prakashjoshipax.VoiceInk/WhisperModels/`
37
+
38
+ ```sh
39
+ ls -la "$HOME/Library/Application Support/com.prakashjoshipax.VoiceInk/WhisperModels/" 2>/dev/null
40
+ ```
41
+
42
+ 用途: 取得した audio 素材のナレーション・歌詞有無の確認、fetch 後の内容チェック補助。素材ライブラリの主経路ではないため、無くても致命的ではない。
43
+
44
+ なければ: 文字起こしが絡む確認だけ省略し、他の工程は止めない。理由を報告する。
45
+
46
+ ## headless Chrome
47
+
48
+ [overlay-authoring/thumbnail.md](../overlay-authoring/thumbnail.md) と同じ既定パスを使う。
49
+
50
+ ```sh
51
+ CHROME="${AKARI_CHROME_BIN:-/Applications/Google Chrome.app/Contents/MacOS/Google Chrome}"
52
+ test -x "$CHROME" && echo "OK: $CHROME"
53
+ ```
54
+
55
+ 用途: 取得した telop / motion / 3d 系素材の `fragment.html` を実際にレンダーして preview.png を作る、または見た目を検品する。
56
+
57
+ なければ: 実体確認済みの preview 画像がカタログ側の `source.preview_url` にも無い限り、HTML 系素材の見た目確認を保留し理由を報告する。実物と違う mock を preview として作らない([harvest-asset](../harvest-asset/SKILL.md) のよくある間違いを継承する)。
58
+
59
+ ## Blender(条件付き — 3D ベイクレシピを扱うときだけ)
60
+
61
+ ```sh
62
+ BLENDER="${AKARI_BLENDER_BIN:-}"
63
+ [ -z "$BLENDER" ] && BLENDER="$(command -v blender || true)"
64
+ [ -z "$BLENDER" ] && BLENDER="/Applications/Blender.app/Contents/MacOS/Blender"
65
+ test -x "$BLENDER" && "$BLENDER" --version | head -1
66
+ ```
67
+
68
+ 用途: 3d ベイクレシピ(`scene.py` 実体の素材)のヘッドレスレンダー。契約は `docs/contract-2026-07-14-3d-bake-recipe.md`、手順は [bake-3d/SKILL.md](../bake-3d/SKILL.md)。
69
+
70
+ なければ: 導入コマンド(`brew install --cask blender`)をユーザーに提示するだけに留める。3d ベイクが絡まない工程は止めない。常設 3 道具のチェック結果にも影響させない。
71
+
72
+ ## 結果の扱い
73
+
74
+ - 3 つとも見つかった場合のみ「道具チェック OK」と報告する。
75
+ - 一部欠けている場合は、欠けている道具名と、それが後続のどの工程・どのカテゴリを制限するかを具体的に報告してから次の工程へ進む。工程全体は止めず、制限付きで進められる部分だけ進める。
76
+ - インストールコマンドをユーザーに無断で実行しない。
77
+
78
+ ## よくある間違い
79
+
80
+ - 道具が入っているかを実行確認せず、パスの存在を推測で報告する。
81
+ - 欠けている道具を黙って別の代替(クラウド API 等)にすり替える。
82
+ - `brew install` 等をユーザー確認なしに実行する。
83
+ - whisper-cli はあるがモデルが無い状態を「OK」と報告する。
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: verify
3
+ description: "AKARI Video(現行 Theia スタック)のタスク契約が要求する検証はしご(L0 / L1 / L2)を実行するときに発動する。タスクの受け入れ条件が「verify 層: L0」「L0+L1」等を指定しているとき、各層で実際に何を・どう叩くかを確認するために読む。"
4
+ ---
5
+
6
+ # verify — 検証はしご(L0 / L1 / L2)
7
+
8
+ > **Language**: Respond in the user's language — 対話・質問・承認確認・レポートはユーザーの使用言語に合わせる(例: 英語で話しかけられたら英語で応答する)。
9
+
10
+ タスク契約テンプレート(内部リポ `tasks/_template/task.md`)が参照する対応表の実体。
11
+ **発明した定義ではなく、直近タスクの `report.md` / `task.md` の実運用から帰納したもの**(帰納元は末尾「根拠」節)。
12
+
13
+ ## 対応表
14
+
15
+ | 層 | 定義 | 判定者 | 現行スタックでの実例 |
16
+ |---|---|---|---|
17
+ | L0 | 静的・機械的検証。exit code だけで合否が決まる。実機起動・人間の目を要さない | エージェント単独 | ほぼ全タスクで必須の最下層 |
18
+ | L1 | 実機観測(自動化)。Electron を実際に起動し、CDP/Playwright で操作・スクショ・性能実測を行う。人間の主観判断を要さず、スクリプトで再現可能 | エージェント単独(スクリプト) | 2026-07-15/16 の shell 系タスクはほぼ全て L0+L1 |
19
+ | L2 | 自動化・スクリプトでは判定し切れない層(主観的な視覚品質判断・実配布物でのオーナー最終確認) | 人間(オーナー) | **現行 Theia スタックでは実例なし**(下記「L2 について」参照) |
20
+
21
+ ## L0 — 静的・機械的
22
+
23
+ 現行 Theia スタックでの実体は `apps/shell` の npm scripts:
24
+
25
+ ```sh
26
+ cd apps/shell
27
+ PYTHON=/usr/bin/python3 npm install --no-workspaces # 初回・依存更新時のみ
28
+ npm run build:ext # tsc -b(6 拡張の型検査 + コンパイル)
29
+ npm run lint # eslint "extensions/*/src/**/*.{ts,tsx}"
30
+ ```
31
+
32
+ - `build:ext` と `lint` が exit 0 = L0 合格の最低ライン。CI(`.github/workflows/ci.yml`)はこの 2 つを push/PR で自動実行する
33
+ - `npm run build`(= `build:ext && theia build --mode production`)は、フロントエンド/バックエンド/electron のバンドル生成まで含むより厳密な L0 として個々のタスク契約が課すことがある(例: `shell-sb-surfaces` / `shell-sc-project` / `shell-sd-partner` / `governance-sanitize`)。ただし **CI には載せていない**(後述「地雷」参照)。タスクで `build` まで求められたら手元で `PYTHON=/usr/bin/python3 npm install --no-workspaces` 後、electron の postinstall が npm 11 の allow-scripts ゲートでスキップされて `theia build` が `ENOENT .../electron/dist/version` で落ちる点に注意し、`echo "<electron のバージョン>" > apps/shell/node_modules/electron/dist/version` で回避すること(`npm run package`/実機起動が要る L1 では、この回避では不十分 — 下記参照)
34
+ - `packages/*` 配下に触るタスクは各 package.json の build/test スクリプトが L0 の実体になる(`waveplan-2026-07-15-sbcd-e5.md` §検収ゲート)
35
+
36
+ ### 既知の地雷(L0)
37
+
38
+ 1. **npm 11 の allow-scripts ゲート**: `npm install` は electron / `@theia/ffmpeg` / drivelist / keytar / node-pty 等 11 パッケージの install script を既定でスキップする(`npm warn allow-scripts ...`)。`build:ext` / `lint` は素の TypeScript / eslint 実行であり、これらのネイティブモジュールを必要としないため**スキップされたままで問題なく通る**(実測済み)。実機を起動する L1 以降で初めて効いてくる
39
+ 2. **Homebrew Python 3.14 と node-gyp**: macOS で `PYTHON=` を指定せず `npm install` すると、`drivelist` の `node-gyp rebuild` が Homebrew Python 3.14 の `pyexpat` ABI 不整合(`Symbol not found: _XML_SetAllocTrackerActivationThreshold`)で失敗し、install 自体が止まる。`PYTHON=/usr/bin/python3`(Apple 純正 Python)を必ず指定すること
40
+ 3. **`apps/shell/package-lock.json` は意図的に `.gitignore` 済み**(`apps/shell/.gitignore` 内 `package-lock.json`)。`npm ci` は使えない。再現性は Node バージョン固定 + `--no-workspaces` で確保する(後者が無いとリポ root へ依存が hoist され、実行時間が約 2 倍・依存解決範囲が変わることを実測済み)
41
+ 4. **grep マッチ 0 件は exit 1**。検証スクリプト内で grep を使うときは `|| true` を付ける
42
+
43
+ ## L1 — 実機観測(Electron を CDP/Playwright で観測する)
44
+
45
+ 現行スタックの L1 は「GUI スクショ必須」という形でほぼ全タスクに課されている
46
+ (`preview-streaming` / `shell-s4-tabs` / `preview-open-repair` / `project-diff-repair` /
47
+ `shell-s12-preview-tab` / `shell-sc-repair` / `shell-strip-menu-repair` 等)。
48
+ 以下は `shell-s4-tabs`(report.md §6-2)と `preview-streaming`(report.md §2)で確立・実証済みの再現手順。
49
+
50
+ ### 手順
51
+
52
+ 1. **ビルド**(L0 に加え electron 実体が要る):
53
+ ```sh
54
+ cd apps/shell
55
+ PYTHON=/usr/bin/python3 npm install --no-workspaces
56
+ # electron の postinstall は allow-scripts ゲートでスキップされているため、
57
+ # 既存キャッシュから手動展開する(既にダウンロード済みの環境が前提):
58
+ ditto -x -k ~/Library/Caches/electron/<hash>/electron-v<version>-darwin-<arch>.zip \
59
+ node_modules/electron/dist
60
+ echo "<version>" > node_modules/electron/dist/version
61
+ npm run build
62
+ ```
63
+ 2. **隔離ワークスペースを用意**: `templates/project-default/` を作業用一時ディレクトリへコピー(元ファイルは無改変)。検証対象の素材(動画等)が要るタスクは、この中に `ffmpeg` 等で実素材を生成する(例: `preview-streaming` は 4K/120 秒/836MB の MP4 を `ffmpeg -f lavfi ...` で生成し実測に使用。検証後は `rm -rf` で完全削除しコミットしない)
64
+ 3. **Electron を直接起動**(`theia start` CLI や Playwright の `_electron.launch()` は不使用 — 後者は argv 解釈に既知不具合があるため):
65
+ ```sh
66
+ node_modules/electron/dist/Electron.app/Contents/MacOS/Electron \
67
+ <apps/shell 絶対パス> <隔離ワークスペース絶対パス> \
68
+ --remote-debugging-port=<port> --user-data-dir=<隔離ディレクトリ> --no-sandbox
69
+ ```
70
+ `THEIA_CONFIG_DIR=<隔離ディレクトリ>` を環境変数で渡し、通常の開発設定と衝突させない
71
+ 4. **`playwright-core` を検証用スクラッチディレクトリにのみ `npm install`**(リポジトリ本体には追加しない)し、
72
+ `chromium.connectOverCDP('http://127.0.0.1:<port>')` でアタッチする
73
+ 5. **入れ子 webview フレームへの到達**: Theia の `WebviewWidget` は外側 `webview.localhost` オリジンの iframe → 内側 `active-frame` という二重入れ子構成を取り、素朴な `page.frames()` 探索では実コンテンツに届かないことがある。CDP の `Page.getFrameTree` と `Runtime.executionContextCreated` イベントの `auxData.frameId` を突き合わせ、実際の内側 execution context を特定してから `Runtime.evaluate` で DOM 状態(`readyState` / `currentTime` / `data-*` 属性等)を直接読む自作クライアントが必要になる場合がある(`preview-streaming` report.md §2 参照)
74
+ 6. **観測・記録**:
75
+ - スクリーンショット: CDP `Page.captureScreenshot` または Playwright の screenshot API。保存先は検証対象拡張の `evidence/<機能名>/*.png`、1 枚 500KB 以下が目安
76
+ - 性能: `ps -o %cpu -p <pid>` を 1 秒間隔でサンプリングし GPU/renderer/main プロセスを分離して記録。タイミングは操作前後の CDP イベント/DOM 状態変化で実測(例: `readyState>=3` 到達までのミリ秒)
77
+ - API 境界: `window.theia.container` 経由で Inversify DI コンテナから直接サービスを呼び出し、フロントエンドのガードをバイパスしてもバックエンドが独立して拒否する(多重防御)ことを確認するのも有効(`preview-streaming` report.md の配信境界検証を参照)
78
+ 7. **後片付け**: 起動した Electron プロセスは `ps aux` で確認した実 PID を指定して `kill`(`pkill -f` のような広いパターンマッチは使わない)。隔離ワークスペース・巨大な生成素材は検証後に完全削除しコミットしない
79
+
80
+ ### 既知の地雷(L1)
81
+
82
+ 1. **拡張ディレクトリ内のネスト `node_modules`**: `apps/shell/extensions/<ext>/node_modules/` に `@theia/*` 等が残っていると、`apps/shell/node_modules/@theia/core` との二重解決で `FrontendApplicationConfigProvider` のようなモジュール単位シングルトンが分裂し、フロントエンドがプリロード画面のまま無限に止まる(dual-package hazard)。実機起動前に `find apps/shell/extensions/*/node_modules -maxdepth 0` を確認し、あれば削除してから `apps/shell/` 直下でクリーンリビルドする
83
+ 2. **Electron の起動エントリ**: `package.json` の `main` フィールドどおり `lib/backend/electron-main.js` を使う。`lib/backend/main.js` を直接指定すると `BrowserWindow` が生成されず `/json/list` が空のままになる
84
+ 3. **パッケージ版でのパス解決**: バンドル後の `__dirname` は開発時と異なる(`app.asar/lib/backend` 等)。`apps/shell` 外への相対パス探索を持つ機能は、`electron-builder --dir` 出力を `ELECTRON_RUN_AS_NODE=1` + `cwd=/` で実行して検証すること(`package-runtime-assets` task.md 参照)。開発時 (`npm start`) だけでの確認は不十分
85
+
86
+ ## L2 について
87
+
88
+ **現行 Theia スタックへ移行した直近タスク群(2026-07-15/16、S-A〜S-D・S4/S6/S12・
89
+ preview-streaming・preview-open-repair・project-diff-repair・package-runtime-assets・
90
+ shell-sc-repair・shell-strip-menu-repair 等)で、L2 が受け入れ条件として課された実例は
91
+ 一件もない。** いずれも「verify 層: L0 + L1(実機 GUI スクショ必須)」の範囲で完結しており、
92
+ 自動化された実機観測(L1)が実質的な最高層として運用されている。
93
+
94
+ L2 は旧 Tauri 実装期の verify スキルで使われていた概念で、当時の実例(帰納元):
95
+
96
+ - `2026-07-15-preview-band-artifact`: L2 = 実機での不具合再現・修正確認。加えて「オーナーが実機で帯の消失を確認」という**オーナー自身の目視**が最終ゲートに使われた
97
+ - `2026-07-15-vlog-mvp-edit`: 「L2(実機アプリ)未実施」— L1(実書き出し・ffprobe 検証)は完了したが、実機アプリでの目視(プレビュー側の合成が理屈どおりに見えるか)は L2 として区別され、範囲外とされた
98
+ - `2026-07-15-decision-cards-runtime`: 「実機(Tauri / companion 拡張 webview)での目視は本タスク範囲外(L2 非対象)」— headless Chrome での自動 DOM 検証(L1 相当)と、実アプリ webview での体感確認(L2)を明確に分けている
99
+ - 非公開の内部タスク記録の契約書(dev-harness、2026-07-14 付)は「本表 L3 実機 ≒ verify L2(実機)」と明記し、本表 L3 は「オーナーによるフィールドテスト → handoff 記録」と定義される(同じく非公開の wave 計画書、2026-07-15 付、§6)
100
+
101
+ これらに共通するのは、**L2 = 自動化・スクリプトでは判定し切れない層**という一線であり、
102
+ 「実素材を使うかどうか」では区別されない(L1 でも `preview-streaming` の 836MB 4K 実撮素材のように
103
+ 実素材を使うことが普通にある)。したがって現行スタックでの L2 は次のように定義する
104
+ (現行スタックでの実例が無いため外挿であることを明記する):
105
+
106
+ > L2 = パッケージ配布物(`electron-builder` 出力)での実運用シナリオを、視覚的な質感・
107
+ > 使用感など自動化スクリプトでは判定不能な観点についてオーナー自身が確認し、handoff に記録する層。
108
+
109
+ ### L2 を課すかどうかの判断基準
110
+
111
+ - 受け入れ条件が **主観的な品質判断**(「違和感がない」「忠実に見える」等、数値化できない観測項目)を含む場合
112
+ - L1 の自動観測(CDP/Playwright)では原理的に再現できない体験(実際の配布物でのインストール〜起動〜操作の一気通貫、実タッチ操作・実マウス操作の感触等)を確認する必要がある場合
113
+ - 司令塔・オーナーが明示的に実機フィールドテストを求めた場合
114
+
115
+ 上記に当てはまらない限り、現行スタックのタスクは L0+L1 で完結させる(実際の運用がそうなっている)。
116
+
117
+ ## どの層を課すか(タスク側の判断基準)
118
+
119
+ - **L0 のみ**: コードに実行時の観測可能な挙動変化が無いタスク(ドキュメント・CI 設定・型定義のみの変更等)。本タスク(`ci-and-verify-skill`)自身がこの例
120
+ - **L0+L1**: `apps/shell/extensions/**` や `packages/preview-engine` 等、GUI・実行時挙動に影響するコード変更を含むタスクの既定。2026-07-15/16 の shell 系タスクはほぼ全てここに属する
121
+ - **L0+L1+L2**: 上記「L2 を課すかどうかの判断基準」に該当する場合のみ。現行スタックでは前例なし
122
+
123
+ ## 根拠(帰納元)
124
+
125
+ 対応表・手順は非公開の内部タスク記録(`akari-video-internal`)の report.md / task.md から帰納したもの
126
+ である。内部タスク記録そのものは本リポには置かない方針(`docs/design-2026-07-13-agent-native-architecture.md`
127
+ §3 と同様の扱い)。検証手順そのもの(コマンド・観測対象・既知の地雷)は上記「L0」「L1」節に実行可能な形で
128
+ 記載済みであり、以下は帰納元タスクの識別のみを示す(すべて非公開):
129
+
130
+ - preview-streaming(2026-07-16): L1 再現手順・836MB 実素材・入れ子 webview フレーム到達法
131
+ - shell-s4-tabs(2026-07-16): L1 再現手順・dual-package hazard・Electron 起動エントリの地雷(§6-2 に手順まとめ)
132
+ - package-runtime-assets(2026-07-16): パッケージ版 L1 の実施方法
133
+ - 内部タスク記録の README: 検収フロー 4-c の CI 前提
134
+ - 内部タスク記録のタスクテンプレート: verify 層の対応表という語彙そのものの出典
135
+ - dev-harness 契約書(2026-07-14)・wave 計画書(2026-07-15)§6: 検証レイヤ表・L0/L1/L2/L3 の定義
136
+ - preview-band-artifact・vlog-mvp-edit・decision-cards-runtime(いずれも 2026-07-15、旧 Tauri 期):
137
+ L2 実例。現行スタックに L2 実例が無いため、L2 の定義根拠としてはこれらのみ