[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H7JMSZMYB2B770JS6KNMP0":3,"skill-same:01M6H7JMSZMYB2B770JS6KNMP0":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6H7JMSZMYB2B770JS6KNMP0","review-roughcut",null,"Use when timeline.json exists and the user asks to review the rough cut, critique the edit, or generate review_report.yaml and review_patch.json.","mocchalera\u002Fvideo-os-v2","mocchalera","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F128188806?v=4","01M6H7GSPJ58ZJ5BA2B9BH7TP0","Takuma Sakamoto","01M6H7GSTXRC8VAD9WCQZFTYXB",5,"MIT","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-roughcut\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36],"review","review roughcut","generate","report","yaml","timeline","critique","json","edit","user","use","patch","cut","2026-11-10 10:12:30",false,"---\nname: review-roughcut\ndescription: Use when timeline.json exists and the user asks to review the rough cut, critique the edit, or generate review_report.yaml and review_patch.json.\nmetadata:\n  filePattern:\n    - '**\u002F06_review\u002Freview_report.yaml'\n    - '**\u002F06_review\u002Freview_patch.json'\n  bashPattern: []\n---\n# review-roughcut\n\n## いつ使うか（必ず発火する条件）\n\n- ユーザーが「レビューして」「粗編集を評価して」「review_report.yaml を作って」と言ったとき\n- `full-pipeline` の Step 7 として呼ばれたとき\n- `compile-timeline` が `05_timeline\u002Ftimeline.json` を新規作成または更新した直後\n- `scripts\u002Fcompile-timeline.ts --patch ...` で patch apply 後の `timeline.json` が更新された直後\n- `timeline.json`、`06_review\u002Fhuman_notes.yaml`、`STYLE.md` のいずれかが変わり、既存 review artifact が stale になったとき\n\n**compile の直後に review を省略してはいけない。** `timeline_version` が変わったら前回の\n`review_report.yaml` \u002F `review_patch.json` は再評価対象とみなす。\n\n## 前提条件\n\n- `schemas\u002Freview-report.schema.json` と `schemas\u002Freview-patch.schema.json` を守ること\n- `runtime\u002Fcommands\u002Freview.ts` の preflight \u002F promote \u002F state transition と整合すること\n- `\u002Freview` preflight は deterministic に以下を行う\n  1. compile\n  2. `05_timeline\u002Fpreview-first30s.mp4` の best-effort 生成\n  3. `05_timeline\u002Freview-qc-summary.json` の生成\n  4. roughcut critique\n  5. patch safety guard\n- `06_review\u002Fhuman_notes.yaml` がある場合は `schemas\u002Fhuman-notes.schema.json` に合わせて読むこと\n- preview 生成が degraded \u002F skip された場合は、直接視聴ベースの断定を避け、timeline \u002F QC からの推論であることを明示すること\n- compile gate \u002F planning gate \u002F timeline schema validation が preflight で落ちた場合、これは critic の `FATAL` 判定ではなく command failure (`GATE_CHECK_FAILED`) として止まる\n\n## 評価の優先順\n\n### 1. evidence の優先順\n\n- `human_notes.yaml`\n- brief \u002F blueprint との factual mismatch\n- `timeline.json` \u002F `review-qc-summary.json` \u002F markers \u002F quality flags\n- AI-only craft \u002F style inference\n\n### 2. critique baseline の順序\n\n- brief mismatch\n- blueprint mismatch\n- technical deliverability\n- craft \u002F style\n\ntaste-level のコメントで factual mismatch を覆い隠さない。\n\n### 3. craft 判断の優先順位\n\ncraft 上のトレードオフは Walter Murch の Rule of Six で並べる。\n\n- `emotion > story > rhythm > eye_trace > plane_2d > space_3d`\n\n2D \u002F 3D continuity が改善しても、emotion や story を弱めるなら減点する。\n\n**`references\u002Freview-rubric.md` を必ず参照すること。**\n\n## やること（ステップ）\n\n### Step 1: deterministic metrics を生成して確認する\n\n- まず `npx tsx scripts\u002Freview-metrics.ts \u003Cproject-dir>` を実行し、`06_review\u002Freview_metrics.json` を生成する\n- `\u002Freview` コマンド経由では preflight 後、critic agent の前に `review_metrics.json` が自動生成される\n- `review_metrics.json` の `checks[].status` が `fail` \u002F `warn` の項目は、`review_report.yaml` の `fatal_issues` \u002F `warnings` \u002F `mismatches_to_blueprint` に機械的に転記する\n- LLM は metrics が測れない主観的判断に集中する:\n  - カットの気持ちよさ\n  - 物語の説得力\n  - 感情の立ち上がり \u002F 余韻\n  - 2D \u002F 3D continuity を犠牲にしてでも emotion \u002F story を優先すべき箇所\n- 定量チェックを LLM の注意力に依存させない。Rule of Six のうち、決定論的に測れる違反は `review_metrics.json` を正とする\n\n### Step 2: preflight の成否と artifact を確認する\n\n- 現在の `05_timeline\u002Ftimeline.json` を正とする\n- `05_timeline\u002Fpreview-first30s.mp4` と `05_timeline\u002Freview-qc-summary.json` を確認する\n- preview が生成されていない場合は、`summary_judgment.rationale` や `details` で inference ベースの評価であることを曖昧にしない\n\n### Step 3: factual mismatch を先に切る\n\n- `must_have`, `must_avoid`, `message.primary`, `audience.primary`, `emotion_curve` を確認する\n- `edit_blueprint.yaml` の beat purpose, required role coverage, pacing intent と `timeline.json` の実際を照合する\n- factual mismatch を見落としたまま taste の話に進まない\n\n### Step 4: rubric に沿って評価する\n\n- `references\u002Freview-rubric.md` の構成 \u002F 感情 \u002F リズム \u002F 技術チェックを順番に見る\n- 重要な指摘にはできるだけ `evidence`, `affected_beat_ids`, `affected_clip_ids` を付ける\n- 直接観測と推論を混ぜない\n- 短尺SNSでは `social_hook_treatment_valid`, `social_visual_refresh_valid`, `social_title_copy_fit_valid`, `social_cta_treatment_valid`, `social_audio_policy_valid` を確認する。brief がCTAを要求する場合、登録済み `cta-card` が終盤35%に2秒以上あることを完成条件にする\n\n### Step 5: `review_report.yaml` を作る\n\n必須 section:\n\n- `summary_judgment`\n- `strengths`\n- `weaknesses`\n- `fatal_issues`\n- `warnings`\n- `mismatches_to_brief`\n- `mismatches_to_blueprint`\n- `recommended_next_pass`\n\n### Step 6: 判定を決める\n\n#### `PASS`\n\n- 意味:\n  technical deliverability に blocker がなく、構成 \u002F 感情 \u002F リズムにも重大な再編集要求がない\n- report への書き方:\n  - `summary_judgment.status: approved`\n  - `fatal_issues: []`\n- runtime 上の意味:\n  critic judgment が通っただけで、project state は operator accept まで自動で `approved` にならない\n\n#### `needs_revision`\n\n- 意味:\n  technical blocker はないが、hook \u002F pacing \u002F beat order \u002F clip choice \u002F audio policy などに改善余地がある\n- report への書き方:\n  - `summary_judgment.status: needs_revision`\n  - `fatal_issues: []`\n- 次アクション:\n  localized fix が safe op に落ちるなら patch を出す\n\n#### `FATAL`\n\n- 意味:\n  preflight 通過後なお、意図した message \u002F coherence \u002F technical deliverability を壊す blocker が残る\n- report への書き方:\n  - `summary_judgment.status: blocked`\n  - `fatal_issues` を必ず埋める\n  - `recommended_next_pass.goal` で compile 再実行や blueprint 見直しの要否を明示する\n- 次アクション:\n  unsafe patch でごまかさず、root cause を report に残す\n\n## `review_patch.json` の生成ルール\n\n- `\u002Freview` では `06_review\u002Freview_patch.json` を artifact として常に作る\n- safe op がない場合も空 patch を作る\n\n基本 shape:\n\n```json\n{\n  \"timeline_version\": \"\u003Ctimeline.json version>\",\n  \"operations\": []\n}\n```\n\n`operations` を入れてよい条件:\n\n- 問題が局所的で、safe \u002F deterministic \u002F machine-executable な修正に落ちる\n- `reason` が 1 op ごとに明確\n- `evidence` が report の指摘と結び付いている\n\nsafe rule:\n\n- `replace_segment`\n  - `target_clip_id` の `fallback_segment_ids` に含まれる segment\n  - または `human_notes.yaml` の `approved_segment_ids` に含まれる segment\n- `insert_segment`\n  - `human_notes.yaml` に `directive_type: insert_segment` と machine-readable anchor がある場合のみ\n- `trim_segment`, `move_segment`, `remove_segment`, `change_audio_policy`, `add_marker`, `add_note`\n  - target が一意で、意図と副作用を説明できる場合のみ\n\nsafe に直せない場合:\n\n- issue は report に残す\n- patch は `operations: []` にする\n- 無理に unsafe な `replace_segment` \u002F `insert_segment` を作らない\n\n**`references\u002Fpatch-patterns.md` を参照し、自然言語の改善提案を schema-valid な op に落とすこと。**\n\n## 出力 artifact\n\n- `06_review\u002Freview_metrics.json`\n- `06_review\u002Freview_report.yaml`\n- `06_review\u002Freview_patch.json`\n- `05_timeline\u002Fpreview-first30s.mp4`\n- `05_timeline\u002Freview-qc-summary.json`\n\n## 注意事項\n\n- `human_notes.yaml` が AI 判断と衝突した場合は human note を優先し、AI 側は `alternative_directions` に退避する\n- `PASS` でも warning はありうる。warning だけで `fatal_issues` に昇格させない\n- `FATAL` でも、原因が preflight hard failure なら review artifact ではなく command failure になる\n- `replace_segment` \u002F `insert_segment` は patch safety guard で filtering される。reject される前提の op に依存した report を書かない\n","# review-roughcut\n\n## いつ使うか（必ず発火する条件）\n\n- ユーザーが「レビューして」「粗編集を評価して」「review_report.yaml を作って」と言ったとき\n- `full-pipeline` の Step 7 として呼ばれたとき\n- `compile-timeline` が `05_timeline\u002Ftimeline.json` を新規作成または更新した直後\n- `scripts\u002Fcompile-timeline.ts --patch ...` で patch apply 後の `timeline.json` が更新された直後\n- `timeline.json`、`06_review\u002Fhuman_notes.yaml`、`STYLE.md` のいずれかが変わり、既存 review artifact が stale になったとき\n\n**compile の直後に review を省略してはいけない。** `timeline_version` が変わったら前回の\n`review_report.yaml` \u002F `review_patch.json` は再評価対象とみなす。\n\n## 前提条件\n\n- `schemas\u002Freview-report.schema.json` と `schemas\u002Freview-patch.schema.json` を守ること\n- `runtime\u002Fcommands\u002Freview.ts` の preflight \u002F promote \u002F state transition と整合すること\n- `\u002Freview` preflight は deterministic に以下を行う\n  1. compile\n  2. `05_timeline\u002Fpreview-first30s.mp4` の best-effort 生成\n  3. `05_timeline\u002Freview-qc-summary.json` の生成\n  4. roughcut critique\n  5. patch safety guard\n- `06_review\u002Fhuman_notes.yaml` がある場合は `schemas\u002Fhuman-notes.schema.json` に合わせて読むこと\n- preview 生成が degraded \u002F skip された場合は、直接視聴ベースの断定を避け、timeline \u002F QC からの推論であることを明示すること\n- compile gate \u002F planning gate \u002F timeline schema validation が preflight で落ちた場合、これは critic の `FATAL` 判定ではなく command failure (`GATE_CHECK_FAILED`) として止まる\n\n## 評価の優先順\n\n### 1. evidence の優先順\n\n- `human_notes.yaml`\n- brief \u002F blueprint との factual mismatch\n- `timeline.json` \u002F `review-qc-summary.json` \u002F markers \u002F quality flags\n- AI-only craft \u002F style inference\n\n### 2. critique baseline の順序\n\n- brief mismatch\n- blueprint mismatch\n- technical deliverability\n- craft \u002F style\n\ntaste-level のコメントで factual mismatch を覆い隠さない。\n\n### 3. craft 判断の優先順位\n\ncraft 上のトレードオフは Walter Murch の Rule of Six で並べる。\n\n- `emotion > story > rhythm > eye_trace > plane_2d > space_3d`\n\n2D \u002F 3D continuity が改善しても、emotion や story を弱めるなら減点する。\n\n**`references\u002Freview-rubric.md` を必ず参照すること。**\n\n## やること（ステップ）\n\n### Step 1: deterministic metrics を生成して確認する\n\n- まず `npx tsx scripts\u002Freview-metrics.ts \u003Cproject-dir>` を実行し、`06_review\u002Freview_metrics.json` を生成する\n- `\u002Freview` コマンド経由では preflight 後、critic agent の前に `review_metrics.json` が自動生成される\n- `review_metrics.json` の `checks[].status` が `fail` \u002F `warn` の項目は、`review_report.yaml` の `fatal_issues` \u002F `warnings` \u002F `mismatches_to_blueprint` に機械的に転記する\n- LLM は metrics が測れない主観的判断に集中する:\n  - カットの気持ちよさ\n  - 物語の説得力\n  - 感情の立ち上がり \u002F 余韻\n  - 2D \u002F 3D continuity を犠牲にしてでも emotion \u002F story を優先すべき箇所\n- 定量チェックを LLM の注意力に依存させない。Rule of Six のうち、決定論的に測れる違反は `review_metrics.json` を正とする\n\n### Step 2: preflight の成否と artifact を確認する\n\n- 現在の `05_timeline\u002Ftimeline.json` を正とする\n- `05_timeline\u002Fpreview-first30s.mp4` と `05_timeline\u002Freview-qc-summary.json` を確認する\n- preview が生成されていない場合は、`summary_judgment.rationale` や `details` で inference ベースの評価であることを曖昧にしない\n\n### Step 3: factual mismatch を先に切る\n\n- `must_have`, `must_avoid`, `message.primary`, `audience.primary`, `emotion_curve` を確認する\n- `edit_blueprint.yaml` の beat purpose, required role coverage, pacing intent と `timeline.json` の実際を照合する\n- factual mismatch を見落としたまま taste の話に進まない\n\n### Step 4: rubric に沿って評価する\n\n- `references\u002Freview-rubric.md` の構成 \u002F 感情 \u002F リズム \u002F 技術チェックを順番に見る\n- 重要な指摘にはできるだけ `evidence`, `affected_beat_ids`, `affected_clip_ids` を付ける\n- 直接観測と推論を混ぜない\n- 短尺SNSでは `social_hook_treatment_valid`, `social_visual_refresh_valid`, `social_title_copy_fit_valid`, `social_cta_treatment_valid`, `social_audio_policy_valid` を確認する。brief がCTAを要求する場合、登録済み `cta-card` が終盤35%に2秒以上あることを完成条件にする\n\n### Step 5: `review_report.yaml` を作る\n\n必須 section:\n\n- `summary_judgment`\n- `strengths`\n- `weaknesses`\n- `fatal_issues`\n- `warnings`\n- `mismatches_to_brief`\n- `mismatches_to_blueprint`\n- `recommended_next_pass`\n\n### Step 6: 判定を決める\n\n#### `PASS`\n\n- 意味:\n  technical deliverability に blocker がなく、構成 \u002F 感情 \u002F リズムにも重大な再編集要求がない\n- report への書き方:\n  - `summary_judgment.status: approved`\n  - `fatal_issues: []`\n- runtime 上の意味:\n  critic judgment が通っただけで、project state は operator accept まで自動で `approved` にならない\n\n#### `needs_revision`\n\n- 意味:\n  technical blocker はないが、hook \u002F pacing \u002F beat order \u002F clip choice \u002F audio policy などに改善余地がある\n- report への書き方:\n  - `summary_judgment.status: needs_revision`\n  - `fatal_issues: []`\n- 次アクション:\n  localized fix が safe op に落ちるなら patch を出す\n\n#### `FATAL`\n\n- 意味:\n  preflight 通過後なお、意図した message \u002F coherence \u002F technical deliverability を壊す blocker が残る\n- report への書き方:\n  - `summary_judgment.status: blocked`\n  - `fatal_issues` を必ず埋める\n  - `recommended_next_pass.goal` で compile 再実行や blueprint 見直しの要否を明示する\n- 次アクション:\n  unsafe patch でごまかさず、root cause を report に残す\n\n## `review_patch.json` の生成ルール\n\n- `\u002Freview` では `06_review\u002Freview_patch.json` を artifact として常に作る\n- safe op がない場合も空 patch を作る\n\n基本 shape:\n\n```json\n{\n  \"timeline_version\": \"\u003Ctimeline.json version>\",\n  \"operations\": []\n}\n```\n\n`operations` を入れてよい条件:\n\n- 問題が局所的で、safe \u002F deterministic \u002F machine-executable な修正に落ちる\n- `reason` が 1 op ごとに明確\n- `evidence` が report の指摘と結び付いている\n\nsafe rule:\n\n- `replace_segment`\n  - `target_clip_id` の `fallback_segment_ids` に含まれる segment\n  - または `human_notes.yaml` の `approved_segment_ids` に含まれる segment\n- `insert_segment`\n  - `human_notes.yaml` に `directive_type: insert_segment` と machine-readable anchor がある場合のみ\n- `trim_segment`, `move_segment`, `remove_segment`, `change_audio_policy`, `add_marker`, `add_note`\n  - target が一意で、意図と副作用を説明できる場合のみ\n\nsafe に直せない場合:\n\n- issue は report に残す\n- patch は `operations: []` にする\n- 無理に unsafe な `replace_segment` \u002F `insert_segment` を作らない\n\n**`references\u002Fpatch-patterns.md` を参照し、自然言語の改善提案を schema-valid な op に落とすこと。**\n\n## 出力 artifact\n\n- `06_review\u002Freview_metrics.json`\n- `06_review\u002Freview_report.yaml`\n- `06_review\u002Freview_patch.json`\n- `05_timeline\u002Fpreview-first30s.mp4`\n- `05_timeline\u002Freview-qc-summary.json`\n\n## 注意事項\n\n- `human_notes.yaml` が AI 判断と衝突した場合は human note を優先し、AI 側は `alternative_directions` に退避する\n- `PASS` でも warning はありうる。warning だけで `fatal_issues` に昇格させない\n- `FATAL` でも、原因が preflight hard failure なら review artifact ではなく command failure になる\n- `replace_segment` \u002F `insert_segment` は patch safety guard で filtering される。reject される前提の op に依存した report を書かない\n",{"name":5,"metadata":42,"description":7},{"bashPattern":43,"filePattern":44},[],[45,46],"**\u002F06_review\u002Freview_report.yaml","**\u002F06_review\u002Freview_patch.json","main","04c39350f915f9ee96edc25b4dd9a8c1dee305e0",".agents\u002Fskills\u002Freview-roughcut",1,"https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2","https:\u002F\u002Fgithub.com\u002Fmocchalera","https:\u002F\u002Fnote.com\u002Fsakamototakuma","2026-09-04 12:49:17",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add mocchalera\u002Fvideo-os-v2 --skill review-roughcut",{"tool":61,"command":62},"bunx","bunx skills add mocchalera\u002Fvideo-os-v2 --skill review-roughcut",{"tool":64,"command":65},"pnpm","pnpm dlx skills add mocchalera\u002Fvideo-os-v2 --skill review-roughcut","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-roughcut\u002FSKILL.md",true,[69,75],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fpatch-patterns.md","REFERENCE","参考文档",4672,"https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-roughcut\u002Freferences\u002Fpatch-patterns.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Freview-rubric.md",7225,"https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-roughcut\u002Freferences\u002Freview-rubric.md",[80,86,97,103,111,120],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":37},"01M6H7M6WQK93V5GM5W56TSS2B","artifact","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Fwarnings\u002F.agents\u002Fskills\u002Fartifact\u002FSKILL.md",[],[82],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":37},"01M6H7M30SN7B0H19J7GR01V2R","finish-creator-short","fixture","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Frfa015\u002F.agents\u002Fskills\u002Ffinish-creator-short\u002FSKILL.md",[],[93,94,95,96,89],"short","finish","creator","finish creator short",{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":37},"01M6H7M025FYS3CP6M36YX9RT2","producer","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Fproducers\u002F.agents\u002Fskills\u002Fproducer\u002FSKILL.md",[],[99],{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":37},"01M6H7KXY9SX4GVG476ZCF2FET","unknown-flag","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Ferrors\u002F.agents\u002Fskills\u002Funknown-flag\u002FSKILL.md",[],[109,110],"unknown","unknown flag",{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":37},"01M6H7KVJ8V10NBZVGM0RXA7CR","missing-template","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Ferrors\u002F.agents\u002Fskills\u002Fmissing-template\u002FSKILL.md",[],[117,118,119],"template","missing","missing template",{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":37},"01M6H7KRRH8G7YSHSMPX2KA6RR","missing-script","https:\u002F\u002Fgithub.com\u002Fmocchalera\u002Fvideo-os-v2\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_contracts\u002Ferrors\u002F.agents\u002Fskills\u002Fmissing-script\u002FSKILL.md",[],[118,126,127],"script","missing script"]