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.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/bin/akari.mjs +14 -0
- package/package.json +42 -0
- package/src/cli.mjs +140 -0
- package/src/messages.mjs +100 -0
- package/src/path-lookup.mjs +47 -0
- package/src/project-state.mjs +25 -0
- package/src/repo-assets.mjs +59 -0
- package/src/task-labels.mjs +30 -0
- package/src/update-check.mjs +189 -0
- package/vendor/packages/project-scaffold/package.json +11 -0
- package/vendor/packages/project-scaffold/src/index.mjs +523 -0
- package/vendor/packages/project-scaffold/test/create-project.test.mjs +81 -0
- package/vendor/packages/project-scaffold/test/skill-adapter-link.test.mjs +204 -0
- package/vendor/packages/schemas/analysis.schema.json +475 -0
- package/vendor/packages/schemas/asset-meta.schema.json +225 -0
- package/vendor/packages/schemas/avatar-rendition.schema.json +65 -0
- package/vendor/packages/schemas/avatar.schema.json +178 -0
- package/vendor/packages/schemas/bin/validate-asset.mjs +597 -0
- package/vendor/packages/schemas/bin/validate-avatar.mjs +486 -0
- package/vendor/packages/schemas/bin/validate-captions.mjs +316 -0
- package/vendor/packages/schemas/bin/validate-connections.mjs +295 -0
- package/vendor/packages/schemas/bin/validate-edit.mjs +766 -0
- package/vendor/packages/schemas/bin/validate-intake.mjs +185 -0
- package/vendor/packages/schemas/bin/validate-interpretation.mjs +515 -0
- package/vendor/packages/schemas/bin/validate-plan-comments.mjs +170 -0
- package/vendor/packages/schemas/bin/validate-plan.mjs +365 -0
- package/vendor/packages/schemas/bin/validate-recipe.mjs +267 -0
- package/vendor/packages/schemas/bin/validate-research-plan.mjs +510 -0
- package/vendor/packages/schemas/bin/validate-review.mjs +427 -0
- package/vendor/packages/schemas/captions.schema.json +141 -0
- package/vendor/packages/schemas/connections.schema.json +153 -0
- package/vendor/packages/schemas/edit.schema.json +437 -0
- package/vendor/packages/schemas/examples/analysis-person-matte-valid/analysis.json +18 -0
- package/vendor/packages/schemas/examples/captions-text-style-background-mode-invalid/captions.json +18 -0
- package/vendor/packages/schemas/examples/captions-text-style-color-non-hex-invalid/captions.json +14 -0
- package/vendor/packages/schemas/examples/captions-text-style-default-only-valid/captions.json +27 -0
- package/vendor/packages/schemas/examples/captions-text-style-omitted-valid/captions.json +11 -0
- package/vendor/packages/schemas/examples/captions-text-style-opacity-out-of-range-invalid/captions.json +8 -0
- package/vendor/packages/schemas/examples/captions-text-style-record-override-valid/captions.json +27 -0
- package/vendor/packages/schemas/examples/captions-text-style-size-non-positive-invalid/captions.json +14 -0
- package/vendor/packages/schemas/examples/captions-text-style-zone-invalid/captions.json +16 -0
- package/vendor/packages/schemas/examples/connections-v0-invalid-auth/connections.json +32 -0
- package/vendor/packages/schemas/examples/connections-v0-memory-valid/connections.json +42 -0
- package/vendor/packages/schemas/examples/edit-beats-duplicate-id/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-beats-invalid-id/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-missing-kind/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-strength-out-of-range/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-beats-v0-src-present/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-v0-valid/edit.json +29 -0
- package/vendor/packages/schemas/examples/edit-beats-v1-src-missing-reference/edit.json +14 -0
- package/vendor/packages/schemas/examples/edit-beats-v1-valid/edit.json +37 -0
- package/vendor/packages/schemas/examples/edit-bgm-ducking-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-fade-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-fade-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-in-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-in-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-missing-path/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-null-valid/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-bgm-sfx-gain-out-of-range/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-bgm-sfx-valid/edit.json +23 -0
- package/vendor/packages/schemas/examples/edit-chroma-key-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-at-negative-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-at-track-valid/edit.json +20 -0
- package/vendor/packages/schemas/examples/edit-cuts-opacity-out-of-range-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-track-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-full-valid/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-omitted-valid/edit.json +9 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-partial-valid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-rotate-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-scale-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-unknown-key-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-negative/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-not-integer/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-out-of-range/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-missing-preset/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-overrides-array/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-preset-only/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-valid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-empty-word/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-invalid-id/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-missing-emotion/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-range-invalid/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v0-src-present/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v0-valid/edit.json +32 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v1-valid/edit.json +39 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-bad-blend/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-chroma-key-on-baked/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-duplicate-id/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-layers-track-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-layers-valid/edit.json +31 -0
- package/vendor/packages/schemas/examples/edit-look-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-master-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-narration-gain-out-of-range/edit.json +18 -0
- package/vendor/packages/schemas/examples/edit-narration-invalid-id/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-narration-missing-provenance/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-narration-valid/edit.json +36 -0
- package/vendor/packages/schemas/examples/edit-narration-voicevox-missing-credit/edit.json +20 -0
- package/vendor/packages/schemas/examples/edit-render-basics-valid/edit.json +22 -0
- package/vendor/packages/schemas/examples/edit-sfx-in-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-in-out-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-out-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-out-type-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-t-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-track-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-speed-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-timeline-declared-valid/edit.json +14 -0
- package/vendor/packages/schemas/examples/edit-timeline-duplicate-id-invalid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-timeline-interleaved-valid/edit.json +22 -0
- package/vendor/packages/schemas/examples/edit-timeline-omitted-valid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-timeline-ref-invalid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-tracks-section-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-tracks-section-valid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-transition-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/edit.json +27 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-a.html +17 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-b.html +17 -0
- package/vendor/packages/schemas/examples/edit-v1-bgm-sfx-valid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-v1-sample/edit.json +14 -0
- package/vendor/packages/schemas/examples/plan-comments-v0-sample/plan-comments.json +19 -0
- package/vendor/packages/schemas/examples/plan-v0-sample/plan.json +39 -0
- package/vendor/packages/schemas/examples/recipe-v0-sample/product-demo-quick-cuts.json +23 -0
- package/vendor/packages/schemas/examples/review-v1-sample/review.json +11 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/AVATAR.md +159 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/avatar.json +21 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-no-avatar-json/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/avatar.json +23 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/AVATAR.md +28 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/avatar.json +19 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-duplicate-task/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-missing-submitted-at/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-target-exclusive/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-unknown-task/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/valid-draft/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/valid-submitted/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-bad-confidence-enum/plan.json +15 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-constraint-bad-applies-to/plan.json +18 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-dangling-media-path/plan.json +15 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-duplicate-slot-id/plan.json +25 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-missing-required-field/plan.json +14 -0
- package/vendor/packages/schemas/fixtures/plan/unsupported-version/plan.json +4 -0
- package/vendor/packages/schemas/fixtures/plan/valid/plan.json +40 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.png +1 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.wav +1 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/broll.mp4 +1 -0
- package/vendor/packages/schemas/fixtures/plan/warns-confidence-gap/plan.json +28 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-pass/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-id-for-index-kind/plan-comments.json +13 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-kind/plan-comments.json +13 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-comments-not-array/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-comment-field/plan-comments.json +12 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-version/plan-comments.json +5 -0
- package/vendor/packages/schemas/fixtures/plan-comments/unsupported-version/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/valid/plan-comments.json +19 -0
- package/vendor/packages/schemas/fixtures/plan-comments/valid-unknown-fields/plan-comments.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-aspect/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-confirmed-by/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-name-casing/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-workflow/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-duplicate-overlay-kind/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-empty-confirmed/recipe.json +9 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-empty-narration/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-missing-version/recipe.json +12 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-provenance-mismatch/recipe.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-source-project-path/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/unsupported-version/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/valid/recipe.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/valid-unknown-fields/recipe.json +16 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-canvas-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-doc-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-image-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-bad-space/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-canvas-rect-with-frame/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-image-rect-with-frame/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-video-null-sourcet/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/valid/review.json +8 -0
- package/vendor/packages/schemas/fixtures/review/valid-canvas-target/review.json +7 -0
- package/vendor/packages/schemas/fixtures/review/valid-input-session/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/valid-strokes/review.json +8 -0
- package/vendor/packages/schemas/intake.schema.json +117 -0
- package/vendor/packages/schemas/interpretation.schema.json +419 -0
- package/vendor/packages/schemas/package.json +18 -0
- package/vendor/packages/schemas/plan-comments.schema.json +52 -0
- package/vendor/packages/schemas/plan.schema.json +129 -0
- package/vendor/packages/schemas/recipe.schema.json +106 -0
- package/vendor/packages/schemas/research-plan.schema.json +230 -0
- package/vendor/packages/schemas/review.schema.json +227 -0
- package/vendor/packages/schemas/test/fixtures/asset/invalid-matched-by/audio/whoosh-transition/meta.json +31 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-catalog/audio/whoosh-transition/meta.json +31 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/fragment.html +139 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/meta.json +32 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/preview.png +0 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-missing-ref/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-ref-mismatch/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-arc-empty-refs/interpretation.json +126 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-missing-interview/interpretation.json +126 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-null-intake/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-dangling-arc-ref/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-duplicate-asset-ref/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-bad-type/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-missing-evidence/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-missing-required-field/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answer-present-when-open/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answered-without-answer/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-dangling-target/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-self-reference/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-end-before-start/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-mismatched-start-end/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-unknown-root-field/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/unsupported-version/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/valid/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-bad-category-enum/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-chapter-ref/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-shot-list-ref/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-decided-at-mismatch/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-duplicate-candidate-id/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-japan-sns-notes-empty/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-missing-required-field/research-plan.json +127 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-selected-missing-candidate/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-structure-confirmed-mismatch/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/unsupported-version/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/valid/research-plan.json +79 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/warns-empty-sources/research-plan.json +120 -0
- package/vendor/packages/schemas/test/validate-asset.test.mjs +38 -0
- package/vendor/packages/schemas/test/validate-avatar.test.mjs +109 -0
- package/vendor/packages/schemas/test/validate-captions.test.mjs +59 -0
- package/vendor/packages/schemas/test/validate-connections.test.mjs +31 -0
- package/vendor/packages/schemas/test/validate-edit.test.mjs +490 -0
- package/vendor/packages/schemas/test/validate-intake.test.mjs +66 -0
- package/vendor/packages/schemas/test/validate-interpretation.test.mjs +167 -0
- package/vendor/packages/schemas/test/validate-plan-comments.test.mjs +70 -0
- package/vendor/packages/schemas/test/validate-plan.test.mjs +67 -0
- package/vendor/packages/schemas/test/validate-recipe.test.mjs +107 -0
- package/vendor/packages/schemas/test/validate-research-plan.test.mjs +98 -0
- package/vendor/packages/schemas/test/validate-review.test.mjs +102 -0
- package/vendor/skills/.gitkeep +0 -0
- package/vendor/skills/address-review/SKILL.md +84 -0
- package/vendor/skills/address-review/bin/core/review-store.mjs +210 -0
- package/vendor/skills/address-review/bin/list.mjs +198 -0
- package/vendor/skills/address-review/bin/respond.mjs +89 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/captions.json +22 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/edit.json +12 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/review.json +100 -0
- package/vendor/skills/address-review/test/review-store.test.mjs +201 -0
- package/vendor/skills/analyze-footage/SKILL.md +35 -0
- package/vendor/skills/analyze-footage/analysis-json.md +185 -0
- package/vendor/skills/analyze-footage/bin/person-matte/person-matte-helper.swift +343 -0
- package/vendor/skills/analyze-footage/bin/person-matte/person-matte.mjs +415 -0
- package/vendor/skills/analyze-footage/bin/speechanalyzer-helper.swift +138 -0
- package/vendor/skills/analyze-footage/bin/transcribe-cloud.mjs +486 -0
- package/vendor/skills/analyze-footage/bin/transcribe-sa.mjs +189 -0
- package/vendor/skills/analyze-footage/events-and-hooks.md +93 -0
- package/vendor/skills/analyze-footage/keyframes-and-review.md +130 -0
- package/vendor/skills/analyze-footage/media-and-transcript.md +219 -0
- package/vendor/skills/analyze-footage/person-matte.md +121 -0
- package/vendor/skills/analyze-footage/references/akari-data-contract.md +18 -0
- package/vendor/skills/analyze-footage/references/asset.meta.example.json +23 -0
- package/vendor/skills/analyze-footage/test/fixtures/scribe-punctuation-inflation.json +17 -0
- package/vendor/skills/analyze-footage/test/normalize-scribe.test.mjs +76 -0
- package/vendor/skills/analyze-footage/workflow.md +95 -0
- package/vendor/skills/analyze-project/SKILL.md +58 -0
- package/vendor/skills/analyze-project/collect.md +51 -0
- package/vendor/skills/analyze-project/decision-record.md +55 -0
- package/vendor/skills/analyze-project/interpretation.md +128 -0
- package/vendor/skills/analyze-project/interview.md +66 -0
- package/vendor/skills/analyze-project/references/interpretation-shape.md +42 -0
- package/vendor/skills/analyze-project/references/open-questions-examples.md +35 -0
- package/vendor/skills/analyze-project/validate-and-render.md +66 -0
- package/vendor/skills/bake-3d/SKILL.md +78 -0
- package/vendor/skills/compile-review-session/SKILL.md +78 -0
- package/vendor/skills/compile-review-session/bin/compile-review-session.mjs +799 -0
- package/vendor/skills/compile-review-session/bin/core/canvas-compiler.mjs +105 -0
- package/vendor/skills/compile-review-session/bin/core/compiler.mjs +221 -0
- package/vendor/skills/compile-review-session/bin/core/review-store.mjs +74 -0
- package/vendor/skills/compile-review-session/bin/core/time-mapping.mjs +370 -0
- package/vendor/skills/compile-review-session/bin/core/transcription.mjs +721 -0
- package/vendor/skills/compile-review-session/compilation-rules.md +98 -0
- package/vendor/skills/compile-review-session/dev-fixtures/README.md +24 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/events.jsonl +5 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/events.jsonl +19 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0005/session.json +1 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/edit.snapshot.json +13 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/events.jsonl +9 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/transcript.json +9 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review.json +7 -0
- package/vendor/skills/compile-review-session/test/canvas-compiler.test.mjs +283 -0
- package/vendor/skills/compile-review-session/test/compiler.test.mjs +458 -0
- package/vendor/skills/create-project/SKILL.md +46 -0
- package/vendor/skills/create-project/bin/create-project.mjs +88 -0
- package/vendor/skills/edit-lint/SKILL.md +73 -0
- package/vendor/skills/edit-plan/SKILL.md +64 -0
- package/vendor/skills/edit-plan/approvals-and-generation.md +106 -0
- package/vendor/skills/edit-plan/avatar-resolution.md +241 -0
- package/vendor/skills/edit-plan/beat-sync.md +545 -0
- package/vendor/skills/edit-plan/beats.md +197 -0
- package/vendor/skills/edit-plan/emphasis-detection.md +366 -0
- package/vendor/skills/edit-plan/execution.md +157 -0
- package/vendor/skills/edit-plan/expression-selection.md +290 -0
- package/vendor/skills/edit-plan/plan-json.md +52 -0
- package/vendor/skills/edit-plan/recipe.md +74 -0
- package/vendor/skills/edit-plan/references/asset.decisions.example.json +12 -0
- package/vendor/skills/edit-plan/references/event.example.json +7 -0
- package/vendor/skills/edit-plan/report-guide.md +192 -0
- package/vendor/skills/edit-plan/workflow.md +108 -0
- package/vendor/skills/generate-narration/SKILL.md +40 -0
- package/vendor/skills/generate-narration/assets/reading-script-v1.md +18 -0
- package/vendor/skills/generate-narration/avatar-voice.md +54 -0
- package/vendor/skills/generate-narration/bin/generate-narration.mjs +572 -0
- package/vendor/skills/generate-narration/engines.md +78 -0
- package/vendor/skills/generate-narration/reading-text.md +36 -0
- package/vendor/skills/generate-narration/voice-profile-setup.md +77 -0
- package/vendor/skills/harvest-asset/SKILL.md +132 -0
- package/vendor/skills/manage-connections/SKILL.md +75 -0
- package/vendor/skills/manage-connections/bin/doctor.mjs +341 -0
- package/vendor/skills/overlay-authoring/3d.md +143 -0
- package/vendor/skills/overlay-authoring/SKILL.md +30 -0
- package/vendor/skills/overlay-authoring/motion.md +58 -0
- package/vendor/skills/overlay-authoring/table.md +41 -0
- package/vendor/skills/overlay-authoring/telop.md +69 -0
- package/vendor/skills/overlay-authoring/text-behind-person.md +224 -0
- package/vendor/skills/overlay-authoring/thumbnail.md +126 -0
- package/vendor/skills/render-cut/SKILL.md +66 -0
- package/vendor/skills/research-plan/SKILL.md +75 -0
- package/vendor/skills/research-plan/competitor.md +50 -0
- package/vendor/skills/research-plan/ideate.md +56 -0
- package/vendor/skills/research-plan/shotlist.md +46 -0
- package/vendor/skills/research-plan/storyboard.md +48 -0
- package/vendor/skills/research-plan/trends.md +33 -0
- package/vendor/skills/setup-audio-library/SKILL.md +93 -0
- package/vendor/skills/setup-audio-library/candidate-list.md +72 -0
- package/vendor/skills/setup-audio-library/drop-folder.md +72 -0
- package/vendor/skills/setup-audio-library/gallery.md +43 -0
- package/vendor/skills/setup-library/SKILL.md +33 -0
- package/vendor/skills/setup-library/fetch-and-validate.md +102 -0
- package/vendor/skills/setup-library/starter-pack.md +55 -0
- package/vendor/skills/setup-library/tools-check.md +83 -0
- package/vendor/skills/verify/SKILL.md +137 -0
- package/vendor/templates/project-default/.akari/cache/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/connections.json +233 -0
- package/vendor/templates/project-default/.akari/diffs/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/events/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/reports/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/sidecars/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/work/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/workflow.json +48 -0
- package/vendor/templates/project-default/.claude/settings.json +15 -0
- package/vendor/templates/project-default/.claude/skills/README.md +26 -0
- package/vendor/templates/project-default/AGENTS.md +49 -0
- package/vendor/templates/project-default/CLAUDE.md +35 -0
- package/vendor/templates/project-default/assets/.gitkeep +1 -0
- package/vendor/templates/project-default/exports/.gitkeep +1 -0
- package/vendor/templates/project-default/planning/.gitkeep +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_note": "v4.1 実測を模した Scribe raw 応答。文末の無音が句読点トークン(type spacing)の end へ吸われ、末尾語の end が実発話より膨張するケースを固定する。数値は内部 dogfood-v4-1-repair 実走(2026-07-24)の実測(「ね。」2822.84→2826.84 = 4.0s / 「です。」相当 3728.939→3731.399 = 2.46s)に対応。",
|
|
3
|
+
"language_code": "jpn",
|
|
4
|
+
"words": [
|
|
5
|
+
{ "text": "はい", "start": 2820.34, "end": 2821.10, "type": "word" },
|
|
6
|
+
{ "text": "もう", "start": 2821.10, "end": 2821.62, "type": "word" },
|
|
7
|
+
{ "text": "、", "start": 2821.62, "end": 2821.62, "type": "spacing" },
|
|
8
|
+
{ "text": "書き出し", "start": 2821.62, "end": 2822.40, "type": "word" },
|
|
9
|
+
{ "text": "終わりました", "start": 2822.40, "end": 2822.84, "type": "word" },
|
|
10
|
+
{ "text": "ね", "start": 2822.84, "end": 2823.12, "type": "word" },
|
|
11
|
+
{ "text": "。", "start": 2823.12, "end": 2826.84, "type": "spacing" },
|
|
12
|
+
{ "text": "これ", "start": 3728.20, "end": 3728.60, "type": "word" },
|
|
13
|
+
{ "text": "無料", "start": 3728.60, "end": 3728.939, "type": "word" },
|
|
14
|
+
{ "text": "です", "start": 3728.939, "end": 3729.20, "type": "word" },
|
|
15
|
+
{ "text": "。", "start": 3729.20, "end": 3731.399, "type": "spacing" }
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
|
|
7
|
+
import { normalizeScribe } from "../bin/transcribe-cloud.mjs";
|
|
8
|
+
|
|
9
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const fixture = JSON.parse(
|
|
11
|
+
fs.readFileSync(path.join(here, "fixtures", "scribe-punctuation-inflation.json"), "utf8"),
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
test("句読点トークンの無音を末尾語の end へ膨張させない(隙間の原則)", () => {
|
|
15
|
+
const segments = normalizeScribe(fixture);
|
|
16
|
+
|
|
17
|
+
// 文末の「。」で 2 文にセグメント化される。
|
|
18
|
+
assert.equal(segments.length, 2);
|
|
19
|
+
|
|
20
|
+
const [first, second] = segments;
|
|
21
|
+
|
|
22
|
+
// 第 1 文: 末尾語は「ね。」で、end は実発話の end(2823.12)を維持する。
|
|
23
|
+
// 句読点トークン「。」の膨張 end(2826.84)を吸わない。
|
|
24
|
+
assert.equal(first.text, "はいもう、書き出し終わりましたね。");
|
|
25
|
+
assert.equal(first.words.at(-1).text, "ね。");
|
|
26
|
+
assert.equal(first.words.at(-1).end, 2823.12);
|
|
27
|
+
assert.equal(first.end, 2823.12);
|
|
28
|
+
assert.notEqual(first.end, 2826.84);
|
|
29
|
+
|
|
30
|
+
// 第 2 文: 末尾語は「です。」で、end は実発話の end(3729.20)を維持する。
|
|
31
|
+
// 句読点トークン「。」の膨張 end(3731.399)を吸わない。
|
|
32
|
+
assert.equal(second.text, "これ無料です。");
|
|
33
|
+
assert.equal(second.words.at(-1).text, "です。");
|
|
34
|
+
assert.equal(second.words.at(-1).end, 3729.20);
|
|
35
|
+
assert.equal(second.end, 3729.20);
|
|
36
|
+
assert.notEqual(second.end, 3731.399);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test("句読点のみのトークンは独立 word として残さない", () => {
|
|
40
|
+
const segments = normalizeScribe(fixture);
|
|
41
|
+
for (const segment of segments) {
|
|
42
|
+
for (const word of segment.words) {
|
|
43
|
+
assert.ok(
|
|
44
|
+
!/^[。、!?!?,.]+$/.test(word.text),
|
|
45
|
+
`句読点のみの word が残っている: ${JSON.stringify(word)}`,
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("ゼロ幅の読点も直前語へ結合する(既存挙動の非退行)", () => {
|
|
52
|
+
const segments = normalizeScribe(fixture);
|
|
53
|
+
// 「もう」+ ゼロ幅「、」→「もう、」。end は「もう」の end(2821.62)のまま。
|
|
54
|
+
const mou = segments[0].words.find((word) => word.text.startsWith("もう"));
|
|
55
|
+
assert.equal(mou.text, "もう、");
|
|
56
|
+
assert.equal(mou.end, 2821.62);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test("words が無い応答は空配列を返す(非退行)", () => {
|
|
60
|
+
assert.deepEqual(normalizeScribe({}), []);
|
|
61
|
+
assert.deepEqual(normalizeScribe(null), []);
|
|
62
|
+
assert.deepEqual(normalizeScribe({ words: [] }), []);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test("句読点なし・2 秒以上の無音で文分割する(非退行)", () => {
|
|
66
|
+
const segments = normalizeScribe({
|
|
67
|
+
words: [
|
|
68
|
+
{ text: "こんにちは", start: 1.0, end: 1.8 },
|
|
69
|
+
{ text: "今日", start: 5.0, end: 5.4 },
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
assert.equal(segments.length, 2);
|
|
73
|
+
assert.equal(segments[0].text, "こんにちは");
|
|
74
|
+
assert.equal(segments[0].end, 1.8);
|
|
75
|
+
assert.equal(segments[1].text, "今日");
|
|
76
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 分析ワークフロー
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
原本を証拠、`analysis.json` を機械可読な所見として扱う。自動検出は候補生成に使い、最終判断は transcript、実フレーム、ffmpeg の客観情報を突き合わせて行う。確認できない事実を埋めない。
|
|
6
|
+
|
|
7
|
+
## 1. 入力を固定する
|
|
8
|
+
|
|
9
|
+
次を先に確認する。
|
|
10
|
+
|
|
11
|
+
- 入力が読み取り可能な通常ファイルである。
|
|
12
|
+
- `ffprobe` で映像ストリーム、duration、time base を取得できる。
|
|
13
|
+
- duration が有限の正数である。
|
|
14
|
+
- このスキルの `references/analysis.schema.json` を読める。
|
|
15
|
+
- ソースの絶対パスと、JSON に書く相対パスを混同していない。
|
|
16
|
+
|
|
17
|
+
映像ストリームがない、duration を確定できない、または ffmpeg がない場合は分析を完了扱いにしない。原因と止まった工程を報告する。
|
|
18
|
+
|
|
19
|
+
## 2. 出力先を決める
|
|
20
|
+
|
|
21
|
+
source がワークスペース内にあり、その祖先から `.akari/` を持つワークスペース root を特定できる場合は、source のワークスペース root からの相対パスを保った `.akari/sidecars/<source-relative-path>.analysis/` を正典の出力先とする。相対パスには `assets/` プレフィックスと source の拡張子を含める。
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
<workspace-root>/
|
|
25
|
+
├── assets/
|
|
26
|
+
│ └── IMG_4606.MOV
|
|
27
|
+
└── .akari/
|
|
28
|
+
└── sidecars/
|
|
29
|
+
└── assets/
|
|
30
|
+
└── IMG_4606.MOV.analysis/
|
|
31
|
+
├── analysis.json
|
|
32
|
+
├── proxy.mp4
|
|
33
|
+
├── whisper-input.wav
|
|
34
|
+
├── whisper.raw.json
|
|
35
|
+
├── keyframes/
|
|
36
|
+
└── work/
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`.akari/` を持つワークスペース構造を特定できない単体実行では、後方互換の出力先を使う。
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
<source-dir>/
|
|
43
|
+
├── <source-stem>.<ext>
|
|
44
|
+
└── analysis/
|
|
45
|
+
└── <source-stem>/
|
|
46
|
+
├── analysis.json
|
|
47
|
+
├── proxy.mp4
|
|
48
|
+
├── whisper-input.wav
|
|
49
|
+
├── whisper.raw.json
|
|
50
|
+
├── keyframes/
|
|
51
|
+
└── work/
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
単体実行の `<source-stem>` は最後の拡張子を除いたファイル名とする。既存の出力ディレクトリが同じ source を指す再分析なら再利用してよい。別 source を指す場合は `<source-stem>-<ext>`、それも衝突する場合は source の正規化絶対パスの SHA-256 先頭 8 桁を接尾辞にする。AKARI プロジェクト内の正典パスでも、最終セグメントの `<name>.analysis` に同じ衝突回避規則を適用し、別 source との衝突時は `<name>-<ext>.analysis`、さらに衝突する場合は SHA-256 先頭 8 桁を接尾辞にする。既存 `analysis.json` の `source` を解決して照合し、名前だけで同一素材と判断しない。
|
|
55
|
+
|
|
56
|
+
JSON 内の `source`、`keyframes[].path`、`tracks.person_matte`(の `path`)の相対パスは、すべて **analysis.json のあるディレクトリ**を基準にする。上の AKARI 標準配置なら `source` は `../../../../assets/IMG_4606.MOV`、キーフレームは `keyframes/<filename>.jpg` となる。単体実行の標準配置なら `source` は `../../<source-filename>` となる。固定の `../` の個数を暗記せず、analysis.json のディレクトリと参照先の実際の階層から相対パスを機械的に算出すること。source が `assets/` 配下でネストしていれば、その深さに応じて必要な階層数も増える。絶対パスは可搬性を落とすため、同一ファイルツリー内を表せない場合に限る。
|
|
57
|
+
|
|
58
|
+
## 3. 工程を順番に実行する
|
|
59
|
+
|
|
60
|
+
1. ffprobe の結果を控える。
|
|
61
|
+
2. 720p プロキシを生成し、映像をデコードできることを確認する。
|
|
62
|
+
3. 音声があれば [media-and-transcript.md](media-and-transcript.md) の 3 層手順(Mac 既定 = SpeechAnalyzer / 共通フォールバック = whisper.cpp / クラウド = 決定カード経由オプトイン)で文字起こしする(可能なら word タイムスタンプ込み)。いずれも使えなければ明示的に劣化する。
|
|
63
|
+
4. transcript から highlight 候補(重要発言)を下書きする(transcript が空ならスキップ)。
|
|
64
|
+
5. プロキシから scene 候補・interval 候補・transcript 駆動候補(highlight 下書きの時刻)を系統別に抽出する。
|
|
65
|
+
6. 候補の source 時刻を回収して統合し、Read で視認する。採用 keyframe に `origin` を記録する。
|
|
66
|
+
7. transcript と視認所見から event を確定する(highlight 下書きは視認結果と突合して確定・棄却する)。
|
|
67
|
+
8. tracks を組み立てる。人物演出を使うと決めた素材でだけ、任意工程として人物マットを生成する([person-matte.md](person-matte.md))。既定は `person_matte: null` のまま進む。
|
|
68
|
+
9. 一時 JSON を Schema 検証・意味検証し、成功したものだけ `analysis.json` に置き換える。
|
|
69
|
+
|
|
70
|
+
プロキシは時間を trim しない。プロキシと原本の時刻対応が崩れた場合は、以降の時刻を原本基準へ補正できるまで停止する。
|
|
71
|
+
|
|
72
|
+
## 4. 完了報告を出す
|
|
73
|
+
|
|
74
|
+
短い報告に次を含める。
|
|
75
|
+
|
|
76
|
+
- source と確定した `analysis.json` のパス
|
|
77
|
+
- transcript、keyframe、event 各件数(keyframe は origin 系統別、event は type 別の内訳付き)
|
|
78
|
+
- `words` を省略した segment 数と理由
|
|
79
|
+
- 文字起こしに使用した backend(speechanalyzer/whisper-cpp/scribe/groq)と選定理由・フォールバックした場合はその理由([media-and-transcript.md#provenancebackendの記録](media-and-transcript.md#provenancebackend-の記録))
|
|
80
|
+
- 使用した ffmpeg、whisper.cpp 実行ファイル、モデルのパス
|
|
81
|
+
- `transcript: []` へ劣化した場合の理由と探索済み場所
|
|
82
|
+
- 人物マットを生成した場合はその quality・処理時間・出力サイズ、生成しなかった場合は理由(既定は「人物演出を使わないため未生成」)
|
|
83
|
+
- Read できなかった画像、未実施の Schema 検証、未確認の音声・人物情報
|
|
84
|
+
- 初期閾値を変更した場合の値と理由
|
|
85
|
+
|
|
86
|
+
劣化理由は Schema 外のフィールドとして JSON に足さず、完了報告に書く。
|
|
87
|
+
|
|
88
|
+
## よくある間違い
|
|
89
|
+
|
|
90
|
+
- 複数素材を 1 個の `analysis.json` にまとめる。
|
|
91
|
+
- 素材別の `<workspace-root>/.akari/sidecars/<source-relative-path>.analysis/analysis.json`(単体実行では `<source-dir>/analysis/<source-stem>/analysis.json`)を使わず、共通の `analysis.json` を素材ごとに上書きする。
|
|
92
|
+
- プロキシの連番フレーム番号を秒だとみなす。
|
|
93
|
+
- transcript がないのに映像だけから発話内容を創作する。
|
|
94
|
+
- 一時生成物の絶対パスを JSON に固定する。
|
|
95
|
+
- Schema が通っただけで `end > start` やファイル存在確認を省く。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-project
|
|
3
|
+
description: プロジェクト内の素材群(analysis.json)と周辺プロジェクト文脈(intake.json・edit.json・planning/・README・過去 PJ)を読み合わせて interpretation.json(解釈層)を作り、事実 + 素材の読みに限定した読み取り専用の分析レポートを描画するスキル。複数素材プロジェクトの内容を素材横断で把握したいとき、analyze-footage が素材ごとの分析を終えたあとの統合、方向性を決める前に一次情報の欠落(取材質問)を洗い出したいときに使う。edit-plan は方針決めの前提としてこのスキルの出力を読む。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# プロジェクトを分析する
|
|
7
|
+
|
|
8
|
+
> **Language**: Respond in the user's language — 対話・質問・承認確認・レポートはユーザーの使用言語に合わせる(例: 英語で話しかけられたら英語で応答する)。
|
|
9
|
+
|
|
10
|
+
## ハードルール
|
|
11
|
+
|
|
12
|
+
- **1 パス目を再実行しない**。素材ごとの事実抽出(STT・フレーム解析等の重い処理)は既存
|
|
13
|
+
[analyze-footage](../analyze-footage/SKILL.md) の analysis.json に委ね、無い素材だけ 1 素材 1 実行で
|
|
14
|
+
実行する。既存 analysis.json は無改修で使う。
|
|
15
|
+
- **2 パス目は素材の再視聴をしない**。1 パス目の出力テキスト(transcript・keyframe note・events)を
|
|
16
|
+
並べて読み直すテキスト推論に限る。素材へ戻るのは、2 パス目がピンポイントで必要と判断した箇所だけ。
|
|
17
|
+
- **2 パス目の入力は analysis.json 群に閉じない**。プロジェクトの周辺文脈
|
|
18
|
+
(intake.json・edit.json・`planning/`・README・過去 PJ 参照があればそれも)を読む。
|
|
19
|
+
analysis.json だけでは素材の由来判定(orphan/unclear 等)に確信を持てない実例が
|
|
20
|
+
実地検証(内部リポの multiasset-dogfood 実走・2026-07-22)で確認されている。
|
|
21
|
+
- **周辺プロジェクト文脈の読み合わせに `memory` 接続を含める**。`.akari/connections.json` に
|
|
22
|
+
`memory` 宣言([contract-2026-07-25-memory-connection-v0.md](../../docs/contract-2026-07-25-memory-connection-v0.md))
|
|
23
|
+
があれば、`entry`(省略時 `INDEX.md`)起点で `include`/`exclude` の範囲だけを読み、
|
|
24
|
+
`interpretation.json` の `inputs.context` に参照ファイルパスを出所として記録する。全文投入は
|
|
25
|
+
禁止。宣言が無ければ何もしない(error にしない)。
|
|
26
|
+
- **解釈の全主張に根拠を必須とする**(`assets[].summary`/`role`/`relations`/`flags`、`arc[]` の
|
|
27
|
+
すべて)。根拠は transcript の引用区間または keyframe note 参照に限り、捏造ゼロを守る。
|
|
28
|
+
根拠を示せない主張は書かない(穴が残るなら open_questions へ)。
|
|
29
|
+
- **open_questions は取材質問のみ**。「どうしますか」(判断)を聞かない。素材にもネットにも
|
|
30
|
+
載っていない一次情報だけを聞く(例文は [interpretation.md](interpretation.md) と
|
|
31
|
+
[references/open-questions-examples.md](references/open-questions-examples.md) を見る)。
|
|
32
|
+
- **停止条件(80 点ライン)= 構成案(arc)が事実の捏造なしに一本通るか**。通れば取材フェーズを
|
|
33
|
+
終える。それ以降の疑問は編集後の微調整(`edit-plan` 側)へ送る。
|
|
34
|
+
- **arc(構成案)はレポートに表示しない**。schema データとしては `interpretation.json` に残す
|
|
35
|
+
(取材質問の生成源 + 対話フェーズで AI が提案する種)。表示除去は 2026-07-22 改訂で確定済み。
|
|
36
|
+
- [interpretation.schema.json](../../packages/schemas/interpretation.schema.json) にない
|
|
37
|
+
補助フィールドを追加しない。`validate-interpretation.mjs` が PASS した JSON だけを確定版にする。
|
|
38
|
+
- **レポートに決定 UI(選択肢・ツマミ・確定ボタン)を一切置かない**。方向性はチャットで決める。
|
|
39
|
+
「どうしますか」ではなく、根拠を示した上で AI が提案する。
|
|
40
|
+
- **判断記録は既存の decision_log 慣行(edit-plan 系)に接続する**。新形式を発明しない。
|
|
41
|
+
詳細は [decision-record.md](decision-record.md)。
|
|
42
|
+
- OpenMontage は構造上の参考に限り、AGPL の文章・コードを転写しない。
|
|
43
|
+
|
|
44
|
+
## 実行順と目次
|
|
45
|
+
|
|
46
|
+
1. [collect.md](collect.md) を読み、プロジェクト内の素材を列挙し、analysis.json の有無を
|
|
47
|
+
確認する。無い素材だけ analyze-footage を 1 素材 1 実行で走らせる。
|
|
48
|
+
2. [interpretation.md](interpretation.md) を読み、全 analysis.json + 周辺プロジェクト文脈を
|
|
49
|
+
読み合わせ、根拠必須・捏造ゼロの規律で `interpretation.json` を作る。
|
|
50
|
+
3. [validate-and-render.md](validate-and-render.md) を読み、`validate-interpretation.mjs` で
|
|
51
|
+
PASS を確認してから renderer(`--analysis <ref>=<path>` 形式)でレポートを生成し、開く。
|
|
52
|
+
4. open_questions が残る場合だけ [interview.md](interview.md) を読み、チャットで取材する
|
|
53
|
+
(「どうしますか」禁止)。回答を得たら interview へ昇格し、interpretation とレポートを
|
|
54
|
+
再生成する(手順 2〜3 に戻る)。
|
|
55
|
+
5. [decision-record.md](decision-record.md) を読み、取材の Q&A と 2 パス目の主要判断を
|
|
56
|
+
判断記録へ残す。
|
|
57
|
+
|
|
58
|
+
詳細を先読みせず、現在の工程に対応するファイルだけを読む。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# 素材収集
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
素材ごとの事実抽出(1 パス目)と、素材横断の解釈(2 パス目)を分離する。1 パス目は
|
|
6
|
+
[analyze-footage](../analyze-footage/SKILL.md) の役割のまま変えず、このスキルは「揃っているか
|
|
7
|
+
確認し、無ければ埋める」だけを行う。同じ素材を 2 回分析しない。
|
|
8
|
+
|
|
9
|
+
## 1. プロジェクトの素材を列挙する
|
|
10
|
+
|
|
11
|
+
対象プロジェクトディレクトリ(明示された場合はそれ、無指定なら `assets/` 配下・プロジェクト
|
|
12
|
+
直下の動画/静止画/音声ファイル)を列挙する。列挙対象が不明な場合は、ユーザーに対象パスを
|
|
13
|
+
確認してから進む(これは判断質問ではなく、作業対象を確定するための入力確認)。
|
|
14
|
+
|
|
15
|
+
## 2. 素材ごとに既存分析の有無を確認する
|
|
16
|
+
|
|
17
|
+
[edit-plan/workflow.md §2](../edit-plan/workflow.md#2-素材の有無で分岐する) と同じ探索順序を使う。
|
|
18
|
+
|
|
19
|
+
1. ユーザーが明示した `analysis.json`
|
|
20
|
+
2. `<source-dir>/analysis/<source-stem>/analysis.json`
|
|
21
|
+
3. 素材専用ディレクトリであると確認できる場合だけ `<source-dir>/analysis/analysis.json`
|
|
22
|
+
|
|
23
|
+
`source` が対象素材を指すことを確認してから再利用する。素材が更新された疑いがあれば
|
|
24
|
+
再分析するか、人間へ差分を示す(鮮度の推測はしない)。
|
|
25
|
+
|
|
26
|
+
## 3. 無い素材だけ analyze-footage を実行する
|
|
27
|
+
|
|
28
|
+
有効な分析がない素材は、1 素材 = 1 実行として [analyze-footage](../analyze-footage/SKILL.md) を
|
|
29
|
+
呼ぶ。複数素材なら並列に割り当ててから全件を待つ。各依頼には source の絶対パス・リポジトリ
|
|
30
|
+
ルート・analyze-footage の SKILL.md を渡し、他素材や本スキルの成果物を編集させない。
|
|
31
|
+
|
|
32
|
+
## 4. 素材参照表(ref 表)を作る
|
|
33
|
+
|
|
34
|
+
全素材について、プロジェクト内で一意な `ref`(例: 素材ファイル名の stem、または
|
|
35
|
+
プロジェクト固有の呼称)と、対応する analysis.json への絶対または相対パスを対応付ける。
|
|
36
|
+
この対応表がそのまま `interpretation.json` の `inputs.analyses[]`(`ref` / `path` / `source`)に
|
|
37
|
+
なり、[validate-and-render.md](validate-and-render.md) の renderer 呼び出し
|
|
38
|
+
(`--analysis <ref>=<path>`)の `ref` としてもそのまま使う。
|
|
39
|
+
|
|
40
|
+
`ref` は 1 度決めたら 2 パス目・レポート生成・取材の全工程で一貫させる(`assets[].ref` /
|
|
41
|
+
`arc[].refs[].asset` / `relations[].target` すべてがこの `ref` を参照するため、途中で
|
|
42
|
+
書き換えると FK が壊れる)。
|
|
43
|
+
|
|
44
|
+
## よくある間違い
|
|
45
|
+
|
|
46
|
+
- 分析済みの素材を再度 analyze-footage にかける(1 パス目の再実行はしない)。
|
|
47
|
+
- 複数素材を 1 回の analyze-footage 実行にまとめる(素材ごとの証拠境界が失われる)。
|
|
48
|
+
- `ref` をファイルパスそのものにして、後で相対パスの基準が変わると参照が壊れる状態にする
|
|
49
|
+
(`ref` は場所に依存しない安定 ID にする)。
|
|
50
|
+
- `analysis.json` から見た相対パス(`source` や `keyframes[].path`)を、プロジェクト直下から
|
|
51
|
+
見た相対パスとして解決し直す。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 判断記録
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
チャットでの判断・取材の Q&A は揮発させず、必ず markdown に残す。ファイル契約が正本、
|
|
6
|
+
チャットは注入経路という不変条項(intake v2)の適用であり、スタイル学習・過去 PJ 参照・
|
|
7
|
+
次セッションのコンテキスト供給源になる。**形式は発明しない** —
|
|
8
|
+
[edit-plan の decision_log 慣行](../edit-plan/report-guide.md#decision_log)にそのまま接続する。
|
|
9
|
+
|
|
10
|
+
## 何を記録するか
|
|
11
|
+
|
|
12
|
+
- **2 パス目の主要判断**: 素材の役割づけ・関係づけ・flags の判定(特に `orphan`/`unclear` の
|
|
13
|
+
使い分けなど、根拠はあるが解釈の余地が残る判断)。「根拠 = evidence フィールド」と
|
|
14
|
+
「判断そのものをなぜそう下したか」は別物であり、後者を判断記録に残す。
|
|
15
|
+
- **取材の Q&A**: [interview.md](interview.md) で得た質問と回答(`interpretation.json` の
|
|
16
|
+
`inputs.context.interview[]` へも反映済みのはずだが、判断記録には「なぜその質問をしたか」
|
|
17
|
+
「回答をどう解釈に反映したか」まで残す)。
|
|
18
|
+
- **停止条件の判定**: 取材フェーズを終える判断(構成案が捏造なしに一本通ると判定した理由)。
|
|
19
|
+
|
|
20
|
+
## 記録先とフォーマット
|
|
21
|
+
|
|
22
|
+
[edit-plan/report-guide.md](../edit-plan/report-guide.md#decision_log) が定義する `decision_log`
|
|
23
|
+
の慣行(`(category, subject)` をキーとした時刻順追記・ISO 8601 日時・category・subject・決定・
|
|
24
|
+
理由・決定者・関連 checkpoint)を**そのまま流用**する。analyze-project 用の category は
|
|
25
|
+
`analysis`(2 パス目の判断)/ `interview`(取材の Q&A)を使う。
|
|
26
|
+
|
|
27
|
+
`editing-report.html` という単一 HTML に埋め込む前提は 2026-07-22 改訂で edit-plan 側から
|
|
28
|
+
退いたため(分析専用レポートへの一本化。[edit-plan/report-guide.md](../edit-plan/report-guide.md)
|
|
29
|
+
冒頭の改訂注記を参照)、analyze-project と edit-plan は同一プロジェクトの決定を**共有の
|
|
30
|
+
独立ファイル** `<project>/decision-log.md` に追記する(analyze-project が先に書き始めて
|
|
31
|
+
よく、edit-plan の後続工程がそのまま追記を続ける。1 プロジェクト = 1 ログの単一 SSOT)。
|
|
32
|
+
ファイルが無ければ新規作成し、決定行フォーマットの表(category・subject・決定・理由・
|
|
33
|
+
決定者・関連 checkpoint の列)をヘッダに 1 度だけ書く。既存行は変更・削除せず、新しい行を
|
|
34
|
+
末尾へ追加する。
|
|
35
|
+
|
|
36
|
+
この置き場所の変更(HTML 内蔵 → 独立 markdown ファイル)は、edit-plan 側が固定レポートの
|
|
37
|
+
生成を取りやめたことに伴う**最小限の新設**であり、記録の慣行・フィールド構成そのものは
|
|
38
|
+
一切変えていない。
|
|
39
|
+
|
|
40
|
+
## 記録例
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
| 日時 | category | subject | 決定 | 理由 | 決定者 | 関連 checkpoint |
|
|
44
|
+
|---|---|---|---|---|---|---|
|
|
45
|
+
| 2026-07-22T10:40:00+09:00 | analysis | asset:bg-cm-prototype/flags | unclear と判定 | 由来元 edit.json・planning/production-notes.md から同一プロダクトの CM 試作と確認できたが、本編 transcript に直接言及が無く編集上の具体的根拠が無いため orphan ではなく unclear とした | AI(2 パス目) | - |
|
|
46
|
+
| 2026-07-22T10:55:00+09:00 | interview | oq-01: audio/missing.wav の意図 | 取材質問として open_questions に採用 | source からは確定不能(fieldtest/planning に記録なし)。素材にもネットにも無い一次情報のため取材質問の要件を満たす | AI → オーナーへ回付 | - |
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## よくある間違い
|
|
50
|
+
|
|
51
|
+
- 判断記録の形式を新規に発明する(既存の decision_log 慣行を調べずに独自フォーマットを作る)。
|
|
52
|
+
- チャットでのやり取りだけで済ませ、markdown への反映を省略する(揮発させない)。
|
|
53
|
+
- `interpretation.json` の `inputs.context.interview[]` へは反映したが、判断記録(なぜ聞いたか・
|
|
54
|
+
どう解釈へ反映したか)への記載を省略する。
|
|
55
|
+
- 過去の決定行を新しい判断で上書きする(追記専用の原則違反)。
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# 2 パス目 — interpretation.json を作る
|
|
2
|
+
|
|
3
|
+
## 目次
|
|
4
|
+
|
|
5
|
+
- [原則](#原則)
|
|
6
|
+
- [読む文脈](#読む文脈周辺プロジェクト文脈)
|
|
7
|
+
- [組み立て手順](#組み立て手順)
|
|
8
|
+
- [根拠必須・捏造ゼロ](#根拠必須捏造ゼロ)
|
|
9
|
+
- [flags 走査義務](#flags-走査義務)
|
|
10
|
+
- [open_questions は取材質問のみ](#open_questions-は取材質問のみ判断質問の禁止)
|
|
11
|
+
- [停止条件(80 点ライン)](#停止条件80-点ライン)
|
|
12
|
+
- [arc は内部データ(レポート非表示)](#arc-は内部データレポート非表示)
|
|
13
|
+
|
|
14
|
+
## 原則
|
|
15
|
+
|
|
16
|
+
2 パス目は 1 パス目(analyze-footage)の出力テキストを**並べて読み直すテキスト推論**であり、
|
|
17
|
+
新しい事実を作らない。1 パス目 = 素材ごと・文脈なしの事実抽出、2 パス目 = 全素材の分析結果 +
|
|
18
|
+
周辺文脈を並べて読み直し、素材横断の解釈(役割・関係・浮き・構成案・取材質問)を作る。
|
|
19
|
+
素材の再視聴は 2 パス目が必要と判断した箇所だけに限る。
|
|
20
|
+
|
|
21
|
+
事実層(analysis.json)と解釈層(interpretation.json)を分離するのは、文脈が誤っていても
|
|
22
|
+
事実層は無傷のまま解釈層だけ安く再生成するため。`interpretation.json` はプロジェクトあたり
|
|
23
|
+
1 ファイル、[interpretation.schema.json](../../packages/schemas/interpretation.schema.json) の
|
|
24
|
+
v0 に従う(未知フィールドは足さない。省略可のフィールドは値が無ければキーごと省略し、
|
|
25
|
+
`null` は使わない)。
|
|
26
|
+
|
|
27
|
+
## 読む文脈(周辺プロジェクト文脈)
|
|
28
|
+
|
|
29
|
+
2 パス目の入力は `collect.md` で集めた analysis.json 群だけに閉じない。**プロジェクトが
|
|
30
|
+
既知の AKARI プロジェクト構造(`intake.json` や `edit.json` を持つディレクトリ)の中にある
|
|
31
|
+
場合は、その周辺文脈も読みに行く**:
|
|
32
|
+
|
|
33
|
+
- `intake.json`(あれば要約して `inputs.context.intake` へ)
|
|
34
|
+
- `edit.json`(既に編集判断が下っている場合、その判断・decision_log・章立てを文脈として読む)
|
|
35
|
+
- `planning/`・`README.md`(案件の背景、企画意図、由来)
|
|
36
|
+
- 過去 PJ・他社形式テンプレ参照(AKARI Video 形式に限らず、Premiere / DaVinci / CapCut 等の
|
|
37
|
+
他社プロジェクトファイルも対象。`inputs.context.past_projects[]` へ記録)
|
|
38
|
+
|
|
39
|
+
これは実地検証(内部リポの multiasset-dogfood 実走・2026-07-22)で確定した重要な申し送りである:
|
|
40
|
+
**orphan/unclear の判定は analysis.json(keyframes の note・events)だけでは確信を持てない
|
|
41
|
+
ことがある**。素材だけを見て「これが何のための素材か」が分からない場合、その素材が置かれて
|
|
42
|
+
いる由来プロジェクトの `edit.json`・`planning/`・`README.md`/`CLAUDE.md` を読みに行って初めて
|
|
43
|
+
判定が確定することがある。周辺文脈が無い・読んでも埋まらない場合は、無理に確信を書かず
|
|
44
|
+
`open_questions` へ回すか、flags に確信度の低さを記録する。
|
|
45
|
+
|
|
46
|
+
読んだ文脈は必ず `inputs.context` に来歴として残す(後から「何を踏まえた解釈か」を追跡できる
|
|
47
|
+
ようにする)。文脈が無い項目はキー自体を省略する(`past_projects`/`interview` は該当なしでも
|
|
48
|
+
空配列を残し、「参照した上で無かった」ことを表す。§ 詳細は schema の description を見る)。
|
|
49
|
+
|
|
50
|
+
## 組み立て手順
|
|
51
|
+
|
|
52
|
+
1. `inputs.analyses[]` を `collect.md` の ref 表からそのまま作る(`ref`/`path`/`source` 必須)。
|
|
53
|
+
2. 周辺文脈を読み、`inputs.context` を埋める(無ければキー省略、`past_projects`/`interview` は
|
|
54
|
+
空配列可)。
|
|
55
|
+
3. 素材ごとに `assets[]` を作る: `ref` / `role`(物語上の役割タグ、自由記述)/ `summary` /
|
|
56
|
+
任意で `sections[]`(章単位の役割分析。単素材では `arc` とほぼ同型になりうるので、複数素材
|
|
57
|
+
プロジェクトでは無理に単素材と同じ粒度にしない)/ `relations[]`(他素材との関係。無関係な
|
|
58
|
+
素材なら正直に空配列にする — 捏造して関係を作らない)/ `flags[]`([flags 走査義務](#flags-走査義務)参照)。
|
|
59
|
+
4. 全 `assets[]` を並べ、構成案 `arc[]` を組む(`order`/`title`/`refs[]`/`purpose`/`evidence`)。
|
|
60
|
+
並べ替え・複数素材の統合は 2 パス目がここで初めて行う(1 パス目は時系列のまま)。
|
|
61
|
+
5. `open_questions[]` を作る([取材質問のみ](#open_questions-は取材質問のみ判断質問の禁止))。
|
|
62
|
+
6. [validate-and-render.md](validate-and-render.md) で検証する。
|
|
63
|
+
|
|
64
|
+
## 根拠必須・捏造ゼロ
|
|
65
|
+
|
|
66
|
+
`assets[].summary`/`role`/`relations[]`/`flags[]`、`arc[].purpose` の全主張は、根拠
|
|
67
|
+
(transcript の該当区間の引用、または keyframe note 参照)を示せて初めて書く。示せない主張は
|
|
68
|
+
書かない。`relations[]`/`flags[]` が実質的に空になる(本当に無関係な素材ばかりだった等)場合も、
|
|
69
|
+
それが正直な結果であり、捏造して非空にしない(実地検証で確認済みの原則)。
|
|
70
|
+
|
|
71
|
+
`flags[].evidence` も必須(schema で強制済み)。「なんとなく浮いている気がする」のような
|
|
72
|
+
根拠なし主張は書かない。
|
|
73
|
+
|
|
74
|
+
## flags 走査義務
|
|
75
|
+
|
|
76
|
+
`assets[].flags[]` の走査は 2 パス目の契約義務であり、**空配列は「未走査」ではなく
|
|
77
|
+
「走査した上で該当なし」を意味する**(schema の description どおり)。全素材について
|
|
78
|
+
`orphan`(本編とのつながりが確認できない)/`unclear`(つながりの手がかりはあるが編集上の
|
|
79
|
+
具体的根拠が無い)/`trouble_overlap`(本筋の中で発生したトラブル・脱線)の 3 種を意識的に
|
|
80
|
+
検討したことを、走査した上での結論として残す。3 種で表現しきれない状態に遭遇したら、
|
|
81
|
+
既存 3 値を変更・削除せず追記のみで enum を拡張してよい(要 schema 側の追記)。
|
|
82
|
+
|
|
83
|
+
## open_questions は取材質問のみ(判断質問の禁止)
|
|
84
|
+
|
|
85
|
+
AI は「どうしますか」(判断質問)を聞かない。聞いてよいのは「これは何ですか / なぜ
|
|
86
|
+
やっているんですか」という、**素材にもネットにも載っていない一次情報**だけ。取材は伺いでは
|
|
87
|
+
なく事実収集であり、方針決定ではない。判断はチャットでの対話フェーズ(`edit-plan` 側)が
|
|
88
|
+
扱う。
|
|
89
|
+
|
|
90
|
+
### 良い例(取材質問)
|
|
91
|
+
|
|
92
|
+
- 「公園ロケの撮影日はいつですか」(`fills`: 素材のメタデータとして記録するため)
|
|
93
|
+
- 「`audio/missing.wav` は編集で使う予定だった SFX ですか、それとも配置ミスですか」
|
|
94
|
+
(`fills`: 参照が壊れている理由の事実確認)
|
|
95
|
+
- 「マイクノイズ(300.0-306.5s)の発生原因は屋外の環境音ですか、収録機材由来ですか」
|
|
96
|
+
(`fills`: flags の trouble_overlap を裏付ける一次情報の有無確認)
|
|
97
|
+
|
|
98
|
+
### 悪い例(判断質問。書かない)
|
|
99
|
+
|
|
100
|
+
- 「このトラブル区間は本編に残しますか、カットしますか」— 編集判断であり `edit-plan` の
|
|
101
|
+
チャット対話が扱う。analyze-project は事実(トラブルの内容・自己解決したか・本筋との
|
|
102
|
+
関連度)だけを `flags[]` に記録する。
|
|
103
|
+
- 「章タイトルはこのままでいいですか、言い換えますか」— 構成の好みの判断。
|
|
104
|
+
- 「どんな雰囲気の動画にしたいですか」— 方向性そのものであり、対話フェーズが扱う。
|
|
105
|
+
|
|
106
|
+
見分け方: その質問への回答が**素材の外にある一次情報(日付・意図・経緯・固有名詞など)を
|
|
107
|
+
埋めるものか**(→ 取材質問)、**複数の妥当な選択肢からどれを選ぶかを AI の代わりに人間へ
|
|
108
|
+
丸投げしているか**(→ 判断質問・書かない)。
|
|
109
|
+
|
|
110
|
+
## 停止条件(80 点ライン)
|
|
111
|
+
|
|
112
|
+
取材の停止条件は数値ではなく、**「構成案(arc)が事実の捏造なしに一本通るか」**。`arc[]` の
|
|
113
|
+
どのエントリも `purpose`+`evidence` を、素材の再視聴なしに transcript/keyframe note から直接
|
|
114
|
+
引ける形で書ける状態になったら、取材フェーズを終える。それでもなお残る疑問(好みの分かれる
|
|
115
|
+
判断、レポートの読者にとって重要でない些末な事実)は取材質問にせず、編集後の微調整
|
|
116
|
+
(`edit-plan` 側のチャット対話)へ送る。
|
|
117
|
+
|
|
118
|
+
自己完結度の高い素材(発表者が経緯・意図を全て語る等)では `open_questions` が 0 件のまま
|
|
119
|
+
通ることが正常系である(実地検証で確認済み)。逆に、取材質問が 0 件だからといって
|
|
120
|
+
2 パス目が手を抜いたことにはならない — 走査した上で穴が無かった、という結果を表す。
|
|
121
|
+
|
|
122
|
+
## arc は内部データ(レポート非表示)
|
|
123
|
+
|
|
124
|
+
`arc[]` は interpretation.json のデータとしては必須(`minItems: 1`)だが、
|
|
125
|
+
[analysis-report](../../packages/analysis-report/README.md) のレポート表示からは除外される
|
|
126
|
+
(2026-07-22 改訂)。arc は「対話前に出す分析」ではなく編集提案そのものであり、対話フェーズで
|
|
127
|
+
AI がチャットで「こんな感じはどう」と出す種、および取材質問を発生させる材料として機能する。
|
|
128
|
+
2 パス目はレポートに出ないことを理由に手を抜かず、根拠必須の規律をそのまま適用する。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# 取材 — チャットで一次情報を埋める
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
`interpretation.json` に `open_questions[].status: "open"` が残っている場合だけこの工程に入る。
|
|
6
|
+
取材は伺いではなく事実収集である。**「どうしますか」という文言、または実質的に判断を
|
|
7
|
+
丸投げする言い回しを使わない**([interpretation.md](interpretation.md#open_questions-は取材質問のみ判断質問の禁止)
|
|
8
|
+
の判断質問の禁止と同じ規律)。設計原則「伺いを立てず作り切る」とも矛盾しない
|
|
9
|
+
— 取材は事実収集であって方針の伺いではない。
|
|
10
|
+
|
|
11
|
+
## 1. チャットで質問する
|
|
12
|
+
|
|
13
|
+
`open_questions[]` の `question` をそのままチャットで提示する。複数ある場合はまとめて提示して
|
|
14
|
+
よいが、1 問 1 決定の原則(1 質問 = 1 情報ギャップ)は保つ。質問の前提(なぜ聞くか = `fills`)を
|
|
15
|
+
添えると回答しやすい。
|
|
16
|
+
|
|
17
|
+
良い言い回しの例:
|
|
18
|
+
|
|
19
|
+
> 「`audio/missing.wav` は edit.json の SFX から参照されていますが、対象ファイルが見当たり
|
|
20
|
+
> ませんでした。もともと配置予定だった SFX ですか、それとも参照ミスですか?」
|
|
21
|
+
|
|
22
|
+
避ける言い回しの例(判断丸投げ・書かない):
|
|
23
|
+
|
|
24
|
+
> 「このトラブル区間、本編に残しますか? カットしますか? どうしますか?」
|
|
25
|
+
|
|
26
|
+
後者は analyze-project の管轄ではない。事実(トラブルの内容・自己解決したか・本筋との関連度)
|
|
27
|
+
を `flags[]` に記録した上で、採否の判断は `edit-plan` のチャット対話フェーズへ送る。
|
|
28
|
+
|
|
29
|
+
## 2. 回答を反映する
|
|
30
|
+
|
|
31
|
+
回答を得たら、該当 `open_questions[]` エントリを更新する:
|
|
32
|
+
|
|
33
|
+
- `status` を `"answered"` にする
|
|
34
|
+
- `answer` フィールドに回答を追記する(`open` のときは省略していたフィールド)
|
|
35
|
+
|
|
36
|
+
同時に `inputs.context.interview[]` へ `{ q, a }` の対として昇格する(取材の来歴を
|
|
37
|
+
`inputs.context` に残すのは、後から「何を根拠に解釈したか」を追跡できるようにするため)。
|
|
38
|
+
|
|
39
|
+
回答が新しい根拠になる場合(例: flags の evidence を補強する事実が得られた)は、該当する
|
|
40
|
+
`assets[].flags[]`/`relations[]`/`arc[]` の記述もその事実で更新してよい。ただし更新後も
|
|
41
|
+
[根拠必須・捏造ゼロ](interpretation.md#根拠必須捏造ゼロ)の規律を守り、取材で得た事実の範囲を
|
|
42
|
+
超えて解釈を広げない。
|
|
43
|
+
|
|
44
|
+
## 3. 再生成する
|
|
45
|
+
|
|
46
|
+
`interpretation.json` を更新したら [validate-and-render.md](validate-and-render.md) の手順
|
|
47
|
+
(validate → render → 開く)を再実行し、レポートと取材台帳を最新化する。全 `open_questions`
|
|
48
|
+
が `answered` になっても、それは「取材が尽きた」ことを意味しない —
|
|
49
|
+
[停止条件(80 点ライン)](interpretation.md#停止条件80-点ライン)(構成案が捏造なしに一本通るか)
|
|
50
|
+
を満たしていることを別途確認する。満たしていなければ、新たに生じた `open_questions` を追加して
|
|
51
|
+
同じ工程を繰り返す。
|
|
52
|
+
|
|
53
|
+
## 4. 取材ゼロで通るケース
|
|
54
|
+
|
|
55
|
+
素材が自己完結している場合(発表者が経緯・意図を全て語る等)、`open_questions` が最初から
|
|
56
|
+
0 件で [停止条件](interpretation.md#停止条件80-点ライン)を満たすことがある。これは正常系であり、
|
|
57
|
+
無理に取材質問を作らない。
|
|
58
|
+
|
|
59
|
+
## よくある間違い
|
|
60
|
+
|
|
61
|
+
- 「どうしますか」「どちらがいいですか」等、判断を尋ねる文言を使う。
|
|
62
|
+
- 取材で得た回答をそのまま `arc`/`flags` の根拠として転記せず、`inputs.context.interview` への
|
|
63
|
+
昇格を省略する(後から来歴を追跡できなくなる)。
|
|
64
|
+
- 1 件も答えが返っていないのに `status: "answered"` にする。
|
|
65
|
+
- 取材が尽きたと判断する基準を「open_questions が 0 件になったから」にする
|
|
66
|
+
(停止条件は「構成案が捏造なしに一本通るか」であり、`open_questions` の件数そのものではない)。
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# interpretation.json の形(早見)
|
|
2
|
+
|
|
3
|
+
正本は [interpretation.schema.json](../../../packages/schemas/interpretation.schema.json)。
|
|
4
|
+
このファイルは複製しない(drift 防止)。実例は
|
|
5
|
+
[packages/schemas/test/fixtures/interpretation/valid/interpretation.json](../../../packages/schemas/test/fixtures/interpretation/valid/interpretation.json)
|
|
6
|
+
を読む(2 素材・relations あり・flags 3 種・open_questions 1 open + 1 answered の実例)。
|
|
7
|
+
|
|
8
|
+
## 最小の骨格
|
|
9
|
+
|
|
10
|
+
```json
|
|
11
|
+
{
|
|
12
|
+
"version": 0,
|
|
13
|
+
"inputs": {
|
|
14
|
+
"analyses": [
|
|
15
|
+
{ "ref": "<assets[].ref と一致>", "path": "<analysis.json への相対/絶対パス>", "source": "<由来・生成条件の要約>" }
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"assets": [
|
|
19
|
+
{ "ref": "<一意 ID>", "role": "<自由記述タグ>", "summary": "<要約>", "relations": [], "flags": [] }
|
|
20
|
+
],
|
|
21
|
+
"arc": [
|
|
22
|
+
{ "order": 1, "title": "<構成順の名前>", "refs": [{ "asset": "<assets[].ref>" }], "purpose": "<なぜここにあるか>", "evidence": "<transcript 引用 or keyframe note 参照>" }
|
|
23
|
+
],
|
|
24
|
+
"open_questions": []
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`inputs.context`(`past_projects`/`interview`/`intake`/`notes`)と `assets[].sections`/
|
|
29
|
+
`relations`/`flags` は省略可のフィールドを含む。値が無ければキーごと省略する(`null` は
|
|
30
|
+
使わない)。詳細な必須/省略の条件は schema 本体の `description`/`$comment` を読む —
|
|
31
|
+
ここでの要約より schema が常に正である。
|
|
32
|
+
|
|
33
|
+
## 覚えておく制約(schema 単体では表せず CLI が検証する)
|
|
34
|
+
|
|
35
|
+
- `assets[].ref` と `inputs.analyses[].ref` は 1:1(過不足・重複なし)。
|
|
36
|
+
- `arc[].refs[].asset` / `relations[].target` はすべて `assets[].ref` に存在する(ダングリング
|
|
37
|
+
参照禁止)。`relations[].target` は自己参照不可。
|
|
38
|
+
- `sections[]` は `end > start`。`flags[]` の `start`/`end` は両方指定か両方省略。
|
|
39
|
+
- `open_questions[].status` が `answered` のとき `answer` 必須、`open` のとき省略。
|
|
40
|
+
|
|
41
|
+
いずれも [validate-and-render.md](../validate-and-render.md) の `validate-interpretation.mjs`
|
|
42
|
+
が検証する。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# open_questions 例文集 — 取材質問 / 判断質問の見分け方
|
|
2
|
+
|
|
3
|
+
[interpretation.md](../interpretation.md#open_questions-は取材質問のみ判断質問の禁止) の
|
|
4
|
+
規律を、より多くの実例で補う。判断に迷ったら「この質問への回答は**一次情報**か、それとも
|
|
5
|
+
**複数の妥当な選択肢からの選択**か」で判定する。前者だけを書く。
|
|
6
|
+
|
|
7
|
+
## 取材質問(書いてよい)— 一次情報の欠落を埋める
|
|
8
|
+
|
|
9
|
+
| 状況 | 質問 | fills(何のために聞くか) |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| SFX 参照先ファイルが存在しない | 「`audio/missing.wav` は配置予定だった SFX ですか、それとも参照ミスですか」 | 参照切れの原因を事実として確定するため |
|
|
12
|
+
| 撮影日が transcript にも由来プロジェクトにも記録されていない | 「この B ロールの撮影日はいつですか」 | flags/relations の evidence を補強するため |
|
|
13
|
+
| 登場人物の実名・公開同意が確認できない | 「画面に映っている◯◯さんは実名公開で問題ない方ですか」 | プライバシー配慮の要否を判断する材料(判断そのものは編集フェーズ) |
|
|
14
|
+
| 固有名詞が言い淀みで曖昧 | 「リリース日として言及されている『7月の最終日曜日』の具体的な日付は分かりますか」 | 事実の正確性確認(構成案の成立に必須の場合のみ質問化する) |
|
|
15
|
+
| トラブル区間の技術的原因が不明 | 「画面フリーズ(44:34-44:49)の原因は分かっていますか。自己解決していますか」 | flags の trouble_overlap を裏付ける事実確認 |
|
|
16
|
+
|
|
17
|
+
## 判断質問(書かない)— 選択を人間へ丸投げしている
|
|
18
|
+
|
|
19
|
+
| 悪い質問 | なぜ判断質問か | 代わりにすること |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| 「このトラブル区間は本編に残しますか、カットしますか」 | 複数の妥当な選択肢からの選択 | 事実(内容・自己解決有無・本筋との関連度)だけを `flags[]` に記録し、採否は edit-plan のチャット対話へ送る |
|
|
22
|
+
| 「章タイトルはこのままでいいですか、言い換えますか」 | 好みの判断 | 1 パス目のタイトルが章全体を代表していなければ、根拠に基づく訂正として 2 パス目が直接書く(好みではなく事実の訂正なら書いてよい) |
|
|
23
|
+
| 「どんな雰囲気の動画にしたいですか」 | 方向性そのもの | 対話フェーズ(edit-plan)が扱う。analyze-project は事実の提示までに留める |
|
|
24
|
+
| 「サムネイルはどの案がいいですか」 | 選択肢からの選択 | analyze-project はレポートを作らない。サムネイル案は edit-plan がチャットで提示する |
|
|
25
|
+
| 「BGM は何を使いますか」 | 選択肢からの選択 | 素材計画の管轄(edit-plan)。analyze-project は BGM の要否に関わる事実(既存音声トラックの有無等)だけを記録する |
|
|
26
|
+
|
|
27
|
+
## 見分けにくい境界例
|
|
28
|
+
|
|
29
|
+
- 「この素材はなぜここにあるのですか」— **取材質問として成立する**(由来・意図という一次情報)。
|
|
30
|
+
ただし由来プロジェクトの `edit.json`/`planning/`/`README.md` を読んで確定できるなら、
|
|
31
|
+
質問化する前にそちらを先に調べる(取材は素材にもネットにも無い情報を埋める最終手段)。
|
|
32
|
+
- 「この 2 つの素材は関連していますか」— 事実(同一人物・場所・時間・内容重複)として
|
|
33
|
+
2 パス目が transcript/keyframe note から判定を試み、判定できなければ `relations[]` を
|
|
34
|
+
空のままにするか、判定に必要な一次情報(例: 撮影日・撮影場所)だけを取材質問にする。
|
|
35
|
+
「関連しているとみなして構成しますか」という聞き方は判断質問になるので避ける。
|