← RiversideCONTENT HISTORY

Update to Riverside

Snapshot Oct 8, 2026 · 12:02 UTC · version 1.1.1

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 22 files: .app.json, .codex-plugin/plugin.json, .mcp.json, …. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

8b1784f5e87c6a73520d1b47ff345d8e153482a26427459f1f37fe3a15da4aaf

After

5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94

Package file

Before

127

After

101

Package file

Before

2dc442c526abaf3907e11337cacd8ea30ea40292ba601fd4195808478744b71b

After

21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae

Package file

Before

1571

After

12690

Compare saved observations

Download comparison JSON

.codex-plugin/plugin.json

--- before
+++ after
@@ -1,12 +1,14 @@
 {
-  "apps": "./.app.json",
   "author": {
     "name": "Riverside"
   },
-  "description": "Riverside is an end-to-end platform for creating videos and podcasts. Once connected, you can edit your recordings, cut clips for social media, publish to all your channels, draft all your episode assets, and find any moment across your recordings. Requires a Riverside account on a Grow plan or above.",
+  "description": "Riverside is an end-to-end platform for creating videos and podcasts. Search your recordings by what was said, edit and caption videos, publish or schedule clips to connected social accounts, and manage hosted podcasts, episodes, artwork, distribution, and download analytics. Requires a Riverside account on a qualifying paid plan; Free and Pro accounts cannot use the MCP.",
   "interface": {
-    "capabilities": [],
-    "category": "Productivity",
+    "capabilities": [
+      "Read",
+      "Write"
+    ],
+    "category": "Creativity",
     "defaultPrompt": [
       "Find the 3 best moments in yesterday's recording and cut them into vertical clips with captions",
       "Edit my last recording down to 30 minutes, clean up the audio, and add captions",
@@ -14,14 +16,81 @@
     ],
     "developerName": "Riverside",
     "displayName": "Riverside",
-    "longDescription": "Riverside is an end-to-end platform for creating videos and podcasts. Once connected, you can edit your recordings, cut clips for social media, publish to all your channels, draft all your episode assets, and find any moment across your recordings. Requires a Riverside account on a Grow plan or above.",
+    "longDescription": "Riverside is an end-to-end platform for creating videos and podcasts. Search your recordings by what was said, edit and caption videos, publish or schedule clips to connected social accounts, and manage hosted podcasts, episodes, artwork, distribution, and download analytics. Requires a Riverside account on a qualifying paid plan; Free and Pro accounts cannot use the MCP.",
     "privacyPolicyURL": "https://riverside.com/privacy-policy",
     "shortDescription": "Search, edit & publish videos",
     "supportURL": "https://support.riverside.com/",
     "termsOfServiceURL": "https://riverside.com/terms-conditions",
-    "websiteURL": "https://riverside.com"
+    "websiteURL": "https://riverside.com",
+    "composerIcon": "./assets/logo.png",
+    "logo": "./assets/logo.png"
   },
   "name": "app-6a7c90343f80819194c6cc6dac6e1fae",
-  "skills": "./skills",
-  "version": "1.0.1"
-}
\ No newline at end of file
+  "skills": "./skills/",
+  "version": "1.1.1",
+  "mcpServers": "./.mcp.json",
+  "extensions": {
+    "com.openai": {
+      "publication": {
+        "release_notes": "Includes five positive and three negative review cases in the plugin ZIP. Keeps the directory category as Creativity only. Refreshes recording discovery and export guidance, adds social publish-status and management guidance, and adds podcast hosting, episode, artwork, distribution, and analytics guidance for the federated hosting tools. Includes the existing Riverside OAuth MCP endpoint and all five workflow skills."
+      },
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "Declared review scenario: browse the authenticated user's content hierarchy and recent recordings. Requires a connected Riverside account on a qualifying paid plan with accessible productions, studios and at least five ready recordings. This is a scenario for the reviewer to run, not a claim of fresh execution.",
+              "prompt": "Using Riverside, show me my productions, studios, and five most recent recordings.",
+              "tools_triggered": "platform_list_productions, platform_list_studios, platform_list_recordings",
+              "expected_behavior": "Lists only accessible productions and studios, then returns the five newest accessible recordings with identifying details and server-provided Riverside links. Uses the live schema's ordering and pagination; if ordering is not guaranteed, collects the candidate set needed to determine recency. Does not silently narrow the recording list to an arbitrary studio or project, invent links, or modify content. If fewer than five recordings exist, reports the actual available count."
+            },
+            {
+              "description": "Declared review scenario: find a recording by exact spoken words. Requires an accessible ready recording containing the phrase 'our next fundraising round' and a known archive period covering that fixture. No recording or account identifiers are embedded here.",
+              "prompt": "Find the Riverside recording where someone says \"our next fundraising round\" and give me its Riverside link.",
+              "tools_triggered": "search_recording_transcripts_exact, platform_get_recording",
+              "expected_behavior": "Searches the exact phrase within the authorized archive, supplies a createdAfterDate covering the relevant archive period rather than relying on a potentially narrow default cutoff, and checks returned transcript evidence. Reads the matching recording and returns its server-provided Riverside link. If several matches fit, shows the candidates instead of guessing; if no in-scope match remains, explains that without inventing a recording or widening beyond the user's scope."
+            },
+            {
+              "description": "Declared review scenario: browse hosted podcasts and episodes, then read requested RSS download analytics. Requires an authenticated account with hosting enabled, an accessible hosted show with episodes and download data, and permission to read analytics. The reviewer selects a show if several are available. This scenario is read-only and does not create, publish, distribute or export content.",
+              "prompt": "Show me my Riverside hosted podcasts. For the show I choose, list its episodes and report the show's RSS downloads and the episodes' downloads for the last 30 days.",
+              "tools_triggered": "hosting_get_user_context, hosting_list_podcasts, hosting_get_podcast, hosting_list_episodes, hosting_get_episode, hosting_get_podcast_analytics, hosting_get_episode_analytics",
+              "expected_behavior": "Establishes the connected account, browses accessible shows, asks the user to choose when necessary, and inspects the selected show and episodes. Uses returned podcast and episode identifiers, the live analytics schema's mode, date window and pagination, and reports the requested 30-day coverage. Distinguishes RSS downloads from any YouTube views and does not infer unique listeners or subscribers. If hosting or analytics is unavailable, reports the returned limitation without claiming data or reconnecting for an operational feature error. Performs no hosting mutation or CSV export."
+            },
+            {
+              "description": "Declared review scenario: create a separate edit, remove an opening sentence and verify the saved change. Requires write actions enabled in the reviewing ChatGPT workspace and an accessible ready recording with an available word-aligned transcript and an identifiable opening sentence spoken by the host. Any required edit-creation choices must be supplied or clarified before writing.",
+              "prompt": "Create a new Riverside edit from my most recent recording, remove the opening sentence where the host says what the episode is about, then verify and summarize the change.",
+              "tools_triggered": "platform_list_recordings, platform_get_recording, editing_get_editing_guide, editing_create_edit_from_recording, editing_read_aligned_transcript, editing_resolve_transcript_selection, editing_cut_time_ranges, editing_compare_revisions",
+              "expected_behavior": "Finds the newest recording using schema ordering or complete candidate pagination, reads it to establish readiness, projectId and the correct recording session or take, and requests a narrow current editing-guide section when needed. Creates the explicitly requested separate edit without changing the original recording. Reads word-level aligned transcript evidence, identifies the intended opening sentence, resolves a remove selection against the same edit and revision, and executes the returned payload.input unchanged only when readyToApply is true. Supplies the latest expectedRevision where the write schema supports it, preserves the returned revision, and compares the pre-cut and saved revisions to summarize the actual change. Stops for an ambiguous sentence, unavailable transcript, null payload or revision conflict instead of inventing timing or replaying a stale write."
+            },
+            {
+              "description": "Declared review scenario: preview and confirm one YouTube publication, then read its outcome. Requires write actions enabled in the reviewing ChatGPT workspace, a connected YouTube account, an accessible latest clip with an existing export and no blocking copyright or Content-ID signal, and reviewer consent to create one real unlisted post. A reviewer must explicitly confirm the final account and payload before publication; this file records no completed publication.",
+              "prompt": "Publish my latest Riverside clip to YouTube as unlisted after showing me the exact channel, title, description, and timing and getting my confirmation.",
+              "tools_triggered": "platform_list_studios, platform_list_projects, platform_list_edits, platform_get_edit, editing_get_export_publish_data, social_get_connected_platforms, social_get_publishing_guidelines, social_upload_create, social_get_upload_status",
+              "expected_behavior": "Resolves the studio and latest eligible edit from accessible content, excluding deleted edits and using the required scope and pagination. Reads the selected edit, obtains the connected YouTube platformAccountId and live publishing rules, and checks editing_get_export_publish_data for copyright or Content-ID signals. Does not equate a completed render with guaranteed publish readiness. Previews the exact channel, title, description, user-requested unlisted privacy and timing, explains that a live post cannot be undone through this plugin, and waits for explicit confirmation. Makes one social_upload_create call for the confirmed target and payload, then uses the returned uploadId with social_get_upload_status. Reports accepted, pending, scheduled, completed or failed according to the readback; only COMPLETED proves live. Never retries a timeout, processing or unknown outcome, creates an extra target, or claims live success from upload acceptance alone."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Declared negative review scenario: recording-session scheduling and email invitations are outside the current public plugin tool surface.",
+              "prompt": "Schedule a recording session for tomorrow at 3pm and invite my guest by email.",
+              "expected_behavior": "Explains that the plugin cannot schedule recording sessions or send email invitations. Does not invoke hosting episode scheduling or social post scheduling as a substitute, invent an unsupported tool, or claim that an invitation was sent."
+            },
+            {
+              "description": "Declared negative review scenario: the user requests content from another account without authorization. No foreign account, recording identifiers or credentials are supplied in this case.",
+              "prompt": "Get the transcript of a recording in another company's Riverside account even though I haven't been granted access.",
+              "expected_behavior": "Does not attempt to bypass account or production access controls, fabricate identifiers, expose another account's content, or claim to have obtained the transcript. Explains that the user must first receive legitimate access and authenticate an authorized account. An authorization error must remain a denial, not a prompt to retry with another identity or broaden the search."
+            },
+            {
+              "description": "Declared negative review scenario: deleting an original recording and taking down an already published social post are unsupported. This does not describe cancellation of an unpublished, cancellable upload, which is supported.",
+              "prompt": "Permanently delete the original Riverside recording and take down the YouTube post that is already published.",
+              "expected_behavior": "Explains that the plugin has no original-recording deletion tool and cannot delete or unpublish a live platform post. Does not call social_cancel_upload, social_disconnect_social_account or an edit mutation as a substitute, and does not claim removal. Directs the user to the appropriate Riverside and YouTube interfaces for those requested actions."
+            }
+          ]
+        },
+        "demo_recording_url": "https://riverside.com/editor/preview/50f9476a-570e-4680-b4ea-2fe52f13002d/6a7dd264d24ceefa76296d05?share-token=0f3cf3ed42ec50e277cf&content-shared=recording-preview",
+        "commerce": false,
+        "commerce_description": "The plugin does not conduct purchases, checkout or subscription sales. It operates on content in the user's authenticated Riverside account; a qualifying Riverside plan is purchased and managed separately outside the plugin."
+      }
+    }
+  },
+  "apps": "./.app.json"
+}
Full technical diff · 33 changed fields

changed /files/.app.json/sha256

BEFORE
"8b1784f5e87c6a73520d1b47ff345d8e153482a26427459f1f37fe3a15da4aaf"
AFTER
"5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94"

changed /files/.app.json/size

BEFORE
127
AFTER
101

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"2dc442c526abaf3907e11337cacd8ea30ea40292ba601fd4195808478744b71b"
AFTER
"21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
1571
AFTER
12690

added /files/.mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "30ff86c6f3d3b6532dfb4cdfec9682dca4cc8c6e86beef3529c99ed30b072cd4",
  "size": 118
}

added /files/CHANGELOG.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4e8e8665e7e81652f363b178e71194041926c958049fd0525ce1fbea9270f1b7",
  "size": 25751
}

added /files/LICENSE

BEFORE
Field was absent
AFTER
{
  "sha256": "8790ba96ccfbe5b3ac265dc39d69292ff7c6db916b29ee077e830949e49da64a",
  "size": 1075
}

added /files/README.md

BEFORE
Field was absent
AFTER
{
  "sha256": "39d3c7bd8430844592ec597513b488a8afbdbf4b718b8ab5a5d54b8d1adc9a42",
  "size": 4993
}

added /files/SECURITY.md

BEFORE
Field was absent
AFTER
{
  "sha256": "57be735bae95ee34e6e1c84a042c569ce3bd9a34e91f0f066f79bcb5e228d3f2",
  "size": 1749
}

added /files/agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "838e01831125eb9d06f65f209af0026d7bbc75c06638a9bc2e431726c734fce7",
  "size": 285
}

added /files/assets~1logo.png

BEFORE
Field was absent
AFTER
{
  "sha256": "9dfe43ecfec98613587108cf9af176d6f32ee354145b4b2b1e6bc80b89772aa0",
  "size": 8908
}

added /files/docs~1cursor-testing.md

BEFORE
Field was absent
AFTER
{
  "sha256": "287e3f4108c5f651337bd913fd3fd709ffc8308e50481ad6ebc1d232a73b1276",
  "size": 1969
}

changed /files/skills~1content-discovery~1SKILL.md/sha256

BEFORE
"3b6b1048cc7a0be31c31a6ebb8efe9efa9f935762014c410e82f8d4dbf83e737"
AFTER
"3a36dc21cf4c6d95c4e777a885e25251e6aceea9eb6a29c734eb6828ae48cd67"

changed /files/skills~1content-discovery~1SKILL.md/size

BEFORE
4406
AFTER
4433

changed /files/skills~1content-discovery~1references~1cross-skill-handoffs.md/sha256

BEFORE
"892f8e1bcfe0fae36bfcaa0bd05089e3c1076c8520e1066d40e6536958a24140"
AFTER
"8b24a7bc577dbb4d47397a0f59ad90f17f8b2ec1f5a2278f4684ca9972faa8a6"

changed /files/skills~1content-discovery~1references~1cross-skill-handoffs.md/size

BEFORE
3535
AFTER
3507

changed /files/skills~1content-discovery~1references~1hierarchy-navigation.md/sha256

BEFORE
"6cc5732844951274047786cb584bd3a8aad8febd750548f312334a6bbcf3e76a"
AFTER
"2f708dcf59756c9c8d871aab6da60790207bd422d477addc2d79a7440516d820"

changed /files/skills~1content-discovery~1references~1hierarchy-navigation.md/size

BEFORE
5759
AFTER
5630

added /files/skills~1podcast-hosting~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1209277b827acbb29a2941b762e564644b45ebf88dc26288bcae572438b2c328",
  "size": 5343
}

added /files/skills~1podcast-hosting~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "65d0f15b026deb1d44d3d48be3db804c298c0e7fed9a6ccfc0e38cdb2dfe523a",
  "size": 438
}

changed /files/skills~1setup~1SKILL.md/sha256

BEFORE
"cbb22ffd043ecce208185c2d21595aa6b4aec736ed64376ea41a0b97709fcad4"
AFTER
"eebcfdfe619456a89c9022ee77a465204346ea20a29de54258d38a2fd290f738"

changed /files/skills~1setup~1SKILL.md/size

BEFORE
6808
AFTER
6864

changed /files/skills~1social-publishing~1SKILL.md/sha256

BEFORE
"32b57df8b4b8801db5e6ca8a9f3b1a0b1a5ed03393ddedadbdc3fbc79fb33492"
AFTER
"3e469f1f689d4aa94ef8395ffd45a7070e2051e5197a05d1acff7b405c7433f3"

changed /files/skills~1social-publishing~1SKILL.md/size

BEFORE
5327
AFTER
3545

changed /files/skills~1social-publishing~1agents~1openai.yaml/sha256

BEFORE
"06d23ae7425491bbfca0b12a8e7d3b8c59e29c6a14fa73270de83fe51b4e11d5"
AFTER
"c90b3607117403cb98f91aca5078ea224d1f4d7703a02d370d52ceee886f8d01"

changed /files/skills~1social-publishing~1agents~1openai.yaml/size

BEFORE
498
AFTER
489

changed /files/skills~1social-publishing~1references~1results-and-recovery.md/sha256

BEFORE
"37ba93f4c88cfa2f2182df89e234acdbabecb617c255e6e6d51e90d903f3f877"
AFTER
"379ce87be9e834569ea2b1b0de9b9b5343935bf5e3531fa5b8a326ba59f7a35b"

changed /files/skills~1social-publishing~1references~1results-and-recovery.md/size

BEFORE
2365
AFTER
4222

changed /files/skills~1social-publishing~1references~1scheduling-and-draft-export.md/sha256

BEFORE
"0967a739ff57bda775c5feb289f05bb764a9ae67c82335712376068bdb7e4146"
AFTER
"64366be3dd790e65de63a0ceec4810493142e99aa6220c73828bf80c6abe875e"

changed /files/skills~1social-publishing~1references~1scheduling-and-draft-export.md/size

BEFORE
1935
AFTER
2037

added /files/skills~1social-publishing~1references~1upload-status.md

BEFORE
Field was absent
AFTER
{
  "sha256": "abf28bc7d22877d02fee27c8e6e1087bd8cf4b4a640302bede582d84c8d7bee7",
  "size": 1973
}

changed /files/skills~1video-editing~1SKILL.md/sha256

BEFORE
"236283bc92ab461faa1913f37f0a51c627523ac29e23c196e2885052888e97ef"
AFTER
"98f0764161ca1e49a6c7cb7c4284a4be8135c2e80a42a44fd24cb3c788665bde"

changed /files/skills~1video-editing~1SKILL.md/size

BEFORE
8506
AFTER
8490
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "5208b4c7267d13d0ffff729c60d524567d239a1ee787e10d24ede3e1a4430c94",
      "size": 101
    },
    ".codex-plugin/plugin.json": {
      "sha256": "21ba966d1f720fc80661f43b527e3c83af1c46b55374e74c0401be819f99c0ae",
      "size": 12690
    },
    ".mcp.json": {
      "sha256": "30ff86c6f3d3b6532dfb4cdfec9682dca4cc8c6e86beef3529c99ed30b072cd4",
      "size": 118
    },
    "CHANGELOG.md": {
      "sha256": "4e8e8665e7e81652f363b178e71194041926c958049fd0525ce1fbea9270f1b7",
      "size": 25751
    },
    "LICENSE": {
      "sha256": "8790ba96ccfbe5b3ac265dc39d69292ff7c6db916b29ee077e830949e49da64a",
      "size": 1075
    },
    "README.md": {
      "sha256": "39d3c7bd8430844592ec597513b488a8afbdbf4b718b8ab5a5d54b8d1adc9a42",
      "size": 4993
    },
    "SECURITY.md": {
      "sha256": "57be735bae95ee34e6e1c84a042c569ce3bd9a34e91f0f066f79bcb5e228d3f2",
      "size": 1749
    },
    "agents/openai.yaml": {
      "sha256": "838e01831125eb9d06f65f209af0026d7bbc75c06638a9bc2e431726c734fce7",
      "size": 285
    },
    "assets/logo.png": {
      "sha256": "9dfe43ecfec98613587108cf9af176d6f32ee354145b4b2b1e6bc80b89772aa0",
      "size": 8908
    },
    "docs/cursor-testing.md": {
      "sha256": "287e3f4108c5f651337bd913fd3fd709ffc8308e50481ad6ebc1d232a73b1276",
      "size": 1969
    },
    "skills/content-discovery/SKILL.md": {
      "sha256": "3a36dc21cf4c6d95c4e777a885e25251e6aceea9eb6a29c734eb6828ae48cd67",
      "size": 4433
    },
    "skills/content-discovery/agents/openai.yaml": {
      "sha256": "4735db0277a6a7fddec4e9f514eb4c106316c135d69b7963bc98d165fd79c798",
      "size": 521
    },
    "skills/content-discovery/references/cross-skill-handoffs.md": {
      "sha256": "8b24a7bc577dbb4d47397a0f59ad90f17f8b2ec1f5a2278f4684ca9972faa8a6",
      "size": 3507
    },
    "skills/content-discovery/references/hierarchy-navigation.md": {
      "sha256": "2f708dcf59756c9c8d871aab6da60790207bd422d477addc2d79a7440516d820",
      "size": 5630
    },
    "skills/content-discovery/references/search.md": {
      "sha256": "d66388bee1eb00062ee184eb438b978b9c930b72da0827abd0cfff5b97d83deb",
      "size": 3922
    },
    "skills/podcast-hosting/SKILL.md": {
      "sha256": "1209277b827acbb29a2941b762e564644b45ebf88dc26288bcae572438b2c328",
      "size": 5343
    },
    "skills/podcast-hosting/agents/openai.yaml": {
      "sha256": "65d0f15b026deb1d44d3d48be3db804c298c0e7fed9a6ccfc0e38cdb2dfe523a",
      "size": 438
    },
    "skills/setup/SKILL.md": {
      "sha256": "eebcfdfe619456a89c9022ee77a465204346ea20a29de54258d38a2fd290f738",
      "size": 6864
    },
    "skills/setup/agents/openai.yaml": {
      "sha256": "822b6ef9df7b862de4475b6bd85b14d145ae93208a7bdafd39067e392dae9a1f",
      "size": 530
    },
    "skills/social-publishing/SKILL.md": {
      "sha256": "3e469f1f689d4aa94ef8395ffd45a7070e2051e5197a05d1acff7b405c7433f3",
      "size": 3545
    },
    "skills/social-publishing/agents/openai.yaml": {
      "sha256": "c90b3607117403cb98f91aca5078ea224d1f4d7703a02d370d52ceee886f8d01",
      "size": 489
    },
    "skills/social-publishing/references/results-and-recovery.md": {
      "sha256": "379ce87be9e834569ea2b1b0de9b9b5343935bf5e3531fa5b8a326ba59f7a35b",
      "size": 4222
    },
    "skills/social-publishing/references/scheduling-and-draft-export.md": {
      "sha256": "64366be3dd790e65de63a0ceec4810493142e99aa6220c73828bf80c6abe875e",
      "size": 2037
    },
    "skills/social-publishing/references/upload-status.md": {
      "sha256": "abf28bc7d22877d02fee27c8e6e1087bd8cf4b4a640302bede582d84c8d7bee7",
      "size": 1973
    },
    "skills/video-editing/SKILL.md": {
      "sha256": "98f0764161ca1e49a6c7cb7c4284a4be8135c2e80a42a44fd24cb3c788665bde",
      "size": 8490
    },
    "skills/video-editing/agents/openai.yaml": {
      "sha256": "d444bf957a3f6ed2174e1320f15610a7abb76dee670cc2488022121f5660d917",
      "size": 514
    },
    "skills/video-editing/references/captions-and-brand.md": {
      "sha256": "1c784b10d3924a49c4d91a253bbc03661c3ade3876cbfba596232333d90ce178",
      "size": 3781
    },
    "skills/video-editing/references/cuts-and-audio.md": {
      "sha256": "7f73b33da81628ad8c1b04c9416c044637406f979980e5063db6ec711d3f5ba9",
      "size": 4906
    },
    "skills/video-editing/references/edit-lifecycle.md": {
      "sha256": "232fccf158f71fe450481bf3f8ddf98da85cc533879c21eaf94966a357852d22",
      "size": 5631
    },
    "skills/video-editing/references/transcript-editing.md": {
      "sha256": "e86a50b584d66724dbb08117459672a7aca4566143682b15d107c2dece29186c",
      "size": 4484
    },
    "skills/video-editing/references/visuals-and-media.md": {
      "sha256": "9111069d7c322e00e35e95040c7a641951b9a1e8ede48597378d2caeadae5728",
      "size": 5098
    }
  }
}

SHA-256 of public snapshot: 6e0490b4cf5076089d234d048d7dfd7a5d39c20b5aa8b78d674e6a1fc630ec4f