Claude Skill

suede-clip-to-guide

Suede-owned short-to-long content funnel blueprint. Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when thi

LLM Mart · 0 points · 18 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download JasonColapietro-suede-creator-skills-skills_suede-clip-to-guide-f192517.zip · 19 KB
Part of jasoncolapietro/suede-creator-skills — 70 skills

Install

skills CLI npx skills add https://github.com/JasonColapietro/suede-creator-skills/tree/main/skills/suede-clip-to-guide
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jasoncolapietro-suede-creator-skills@llmmart
Git git clone https://github.com/JasonColapietro/suede-creator-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole jasoncolapietro/suede-creator-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Suede Clip to Guide

Build one evidence-backed path from a video moment to a deeper written asset. Treat the clip as the attention layer and the guide as the authority layer. Do not assume the pattern performs; test the bridge against the account baseline.

Default Success Blueprint

Use this as the recommended pattern when the rights, source, claim, platform, and approval gates pass:

Useful guide with one promise
        ↓
Self-contained video moment
        ↓
Rights route + 8/10 moment score
        ↓
Clip hook + source credit + subtitles
        ↓
Post explains why the moment matters
        ↓
One explicit bridge to the guide
        ↓
Max Effort/Fleet: dual certainty gate
        ↓
Exact-content approval
        ↓
Public readback + clip-to-guide measurement
        ↓
Keep, revise, or stop from the observed result

Prefer this blueprint when:

  • a guide already answers the natural next question created by the clip;
  • the goal is deeper understanding, bookmarks, qualified replies, leads, or authority rather than raw views alone;
  • the selected moment passes the 8/10 score and claim-support threshold;
  • the rights route and current platform sequence are recorded;
  • the account can observe at least one clip metric and one guide-transition or campaign metric.

Do not use it when:

  • the guide is thin, unrelated, unpublished without a stable draft, or has no specific promise;
  • the clip needs missing context, distorts the source, or exists only because it is popular;
  • third-party reuse is blocked or the accountable fair-use decision is absent;
  • the platform cannot preserve the source, clip, and guide bridge in a verified sequence;
  • the idea is complete in the short post and the guide would add no depth.

For a first test, build three distinct packages only when three moments pass all gates. Compare them with the account's recent comparable posts. Keep the pattern only if the named guide-transition or campaign metric meets the decision rule; revise one variable at a time when it does not.

Non-Negotiable Gates

Apply these throughout the run. Resolve rights, source, and claims before writing copy; resolve platform, certainty, and approval before a live action:

  1. Rights gate — classify the video as owned, licensed, permission-recorded, native-repost-only, fair-use-review, or blocked. Public availability is not reuse permission.
  2. Source gate — obtain the video, transcript or exact timestamps, guide draft or URL, target platform, intended account, and desired next action.
  3. Claim gate — trace factual claims and quotations to the source. Label interpretations as interpretations.
  4. Platform gate — inspect current official requirements and the live composer before promising that media, quote-posts, article cards, links, or replies can be combined.
  5. Approval gate — do not publish, schedule, repost, upload, reply, or edit a live article until the user approves the exact media, copy, guide, account, and sequence.
  6. Certainty gate — when a max-effort or worker-fleet controller runs this skill, require two distinct evidence checks before marking a package approved or published. A worker conclusion is not the second check.

When a blocking gate fails, stop the affected action and return:

HALT — <one-line blocker>
Options:
1. <bounded resolution>
2. <bounded resolution>
3. <bounded resolution, if useful>
Waiting on: <specific evidence or approval>

Continue only on independent draft work that does not bypass the blocker.

Rationalizations that precede a violation

Each excuse below shows up immediately before a gate gets skipped. When one appears in your own reasoning or in the request, treat it as the signal to run the gate, not to waive it.

Excuse Reality
"It's only 12 seconds." Duration is not a rights basis. The clip still needs an owned, licensed, permission-recorded, native-repost, or accountable fair-use route.
"I credited the source." Credit is attribution, not clearance. A blocked or unreviewed source stays blocked with a credit line attached.
"It's public, so it's reusable." Public availability is not reuse permission. Classify the video before writing copy.
"The composer accepted it, so it published." A prepared composer, scheduled item, or click is not a publication. Only the public permalink readback proves it.
"The worker already checked it." Under Max Effort or Worker Fleet a worker conclusion is one check. The certainty gate needs a second, independent one.
"The guide is basically finished." An unpublished guide with no stable draft or specific promise fails the fit test. Build the bridge to something that exists.
"The moment is getting traction, so ship it." Popularity is not the score. A moment below 8/10, or below 2 on claim support or guide bridge, does not qualify.

Workflow

1. Define the funnel contract

Capture:

  • campaign goal: article reads, bookmarks, qualified replies, profile visits, leads, or another named action;
  • target platform and visible posting identity;
  • video source URL or file, owner, transcript availability, and candidate timestamps;
  • guide title, URL or draft, its promise, and current publication state;
  • audience and one next action;
  • whether the user wants a private draft, scheduled package, or live execution.

If product-marketing context exists in .agents/product-marketing.md, .claude/product-marketing.md, or product-marketing-context.md, read it before asking for information already covered there.

2. Choose a lawful video route

Rights status Allowed route
original Cut and publish within the user's approved scope.
licensed Follow the license terms and record the evidence.
permission-recorded Follow the exact approved platforms, duration, credit, and edit scope.
native-repost-only Use the platform's native quote, repost, stitch, duet, embed, or link path. Do not download and re-upload. Treat this as an operational sharing route, not legal clearance.
fair-use-review Prepare a four-factor review for commentary, criticism, news reporting, teaching, scholarship, or research. Do not label the use fair or publish until the accountable owner records the decision.
blocked Do not use the footage. Offer an original commentary clip, a permission request, or a source link instead.

For any source that is not original, licensed, or permission-recorded, read references/third-party-video-rights.md. Do not infer fair use, ownership, or permission. Shortness, credit, a public source, or added commentary alone does not settle fair use. Do not remove watermarks, attribution, or provenance. Prefer a native repost with added analysis or create an original camera or screen-recorded response that summarizes the idea without copying the footage.

3. Establish the guide anchor

The long-form asset must have:

  • one specific promise that the clip can honestly introduce;
  • a title and stable draft or URL;
  • enough depth to reward the transition from short to long;
  • sources for material factual claims;
  • one next action that matches the campaign goal.

If the guide does not exist, return a brief and route the full draft to suede-copy and the portfolio decision to suede-content-strategy. Resume this skill after the guide has a reviewable draft. Do not fabricate a live URL.

4. Score candidate moments

Score each candidate from 0 to 2 on five dimensions:

Dimension 0 1 2
Opening clarity Premise is missing Premise arrives late Premise is clear in 1–3 seconds
Standalone value Needs surrounding context Partly self-contained Complete useful idea or story
Guide bridge Unrelated Adjacent Naturally creates the next question the guide answers
Claim support Unverifiable or misleading Needs qualification Directly supported and correctly framed
Audience fit No named audience fit Broad fit Solves a named audience problem

Select a moment only when it scores at least 8/10, claim support is 2, guide bridge is 2, and the rights gate passes. If none qualify, return the scorecard and request a better source instead of forcing a clip.

5. Build the package

Read references/package-template.md and produce:

  1. Decision snapshot — goal, audience, platform, identity, and chosen sequence.
  2. Source and rights record — owner, source, evidence, transcript excerpt, permitted route, jurisdiction, and any four-factor review.
  3. Guide anchor — exact title, promise, URL or draft state, and the question it answers after the clip.
  4. Clip brief — in/out timestamps, target duration, exact opening, subtitle text, on-screen credit, ending bridge, and export owner.
  5. Funnel post — exact text with four jobs:
    • hook the video moment;
    • explain why it matters;
    • bridge to the deeper guide;
    • give one specific next action.
  6. Publish sequence — one of the verified patterns below.
  7. Measurement plan — baseline, observation window, and decision rule.
  8. Certainty record — execution mode, two check owners or processes, direct evidence, contradictions, and final verdict.
  9. Approval bundle — exact media, post copy, guide, identity, and sequence.

Do not pad the post with generic setup, unsupported performance language, or multiple competing calls to action.

6. Choose a verified sequence

Use one:

  • Anchor-first — publish or verify the guide, then publish the clip-led post that references it.
  • Clip-first — publish the clip, then place the guide in the platform's verified companion location, such as a first reply or supported link field.
  • Native-repost — quote or repost the third-party source with original analysis and a guide bridge; do not re-upload the source media.

Do not assume a quote-post can also carry new media. Verify the current composer and choose the smallest sequence that preserves the clip, guide, and source credit.

7. Run the dual certainty gate when required

Record execution_mode as standard, max-effort, or worker-fleet. Standard mode may record certainty_status: not-required. Max Effort and Worker Fleet must run both checks and may not mark a package approved or published until certainty_status: proved. Record one package version, timestamp, or content hash so both checks evaluate the same unchanged artifact.

Check 1 — production proof

  • Reopen the video or transcript at the selected timestamps.
  • Match the quotation, claim framing, rights evidence, moment score, guide promise, bridge, exact copy, identity, sequence, and one CTA to the package.
  • Run the package validator for a saved artifact.
  • In Fleet mode, the fleet worker's acceptance-criteria self-check may satisfy this check, but remains provisional.

Check 2 — independent proof

  • Inspect the source evidence and assembled package directly; do not review only Check 1's summary.
  • Use a different failure lens, evidence source, or acceptance criterion and try to disprove the rights route, factual framing, guide fit, platform sequence, and approval readiness.
  • In Max Effort with useful parallel work, keep the producer and adversarial reviewer separate. For one atomic Max Effort job, perform a fresh second pass after reloading the source evidence.
  • In Fleet mode, the controller must perform this check and mark the worker output accepted, rejected, or fix brief. A second worker or repeated self-check does not replace controller review.

Use only:

  • PROVED — both checks pass with direct evidence and every contradiction is resolved;
  • UNPROVED — a check is incomplete, indirect, or disagrees with the other;
  • BLOCKED — access, authority, rights, or platform state prevents a required check.

If either check is not PROVED, keep publication unapproved, use the halt format, and name the smallest fix or evidence needed. The dual check raises confidence; it does not guarantee truth, create legal clearance, or replace the live readback. A material change to the media, timestamps, rights evidence, guide, copy, identity, sequence, or CTA resets certainty_status to pending and requires both checks again.

8. Require exact-content approval

Before a live action, show:

Account:
Platform:
Media:
Source/rights status:
Guide title and URL:
Exact post text:
Publish sequence:

Approval is valid only for that bundle. If the media, copy, guide URL, account, or sequence changes materially, show the changed bundle and obtain approval again. Verify the visible identity immediately before acting and fail closed on an account mismatch, login challenge, or ambiguous composer.

9. Verify completion

For a saved package, run:

python3 /path/to/suede-clip-to-guide/scripts/validate_package.py path/to/clip-to-guide-package.md

For a live run, also read back:

  • the final public permalink;
  • visible posting identity;
  • rendered post text and media or native source reference;
  • guide URL and publication state;
  • timestamp and any platform warning.

Do not claim publication from a click alone. A complete live run needs the public readback. A draft-only run is complete when the package validator passes and the approval state is reported as draft.

Measurement

Choose the smallest comparable window the account can support. Record:

  • clip retention or completion where exposed;
  • guide opens or link clicks where exposed;
  • bookmarks, saves, qualified replies, and profile visits;
  • the exact campaign action;
  • a comparable recent baseline.

When the platform exposes compatible denominators, calculate:

guide transition rate = verified guide opens / clip-post impressions
qualified action rate = named qualified actions / verified guide opens

If compatible denominators are unavailable, report the available counts separately. Do not combine mismatched platform windows or call clicks article reads.

Change one variable per next test: moment, opening, bridge, sequence, or CTA. Do not report causal lift from an unpaired or tiny sample.

Boundaries

  • Do not download, clip, or re-upload third-party footage without a recorded rights basis or an accountable fair-use decision.
  • Do not give legal clearance or label uncertain reuse as fair use.
  • Do not invent transcripts, timestamps, permissions, URLs, performance, audience demand, or platform capabilities.
  • Do not publish or schedule without exact-content approval and visible-identity verification.
  • Do not alter a source quote to make the hook stronger.
  • Do not describe the campaign as successful until current analytics support the named decision rule.
  • Do not call a Max Effort or Fleet package certain, approved, or publishable when either required check is UNPROVED or BLOCKED.

Routing

  • Need full video editing, generation, captions, color, or exports -> use suede-video, then return here for the funnel package.
  • Need a general platform plan, calendar, listening, or engagement program -> use suede-social.
  • Need the long-form guide written -> use suede-copy; use suede-content-strategy for pillars and portfolio priority.
  • Need paid variants -> use suede-ad-creative.
  • Need maximum-effort orchestration or a high-volume worker-fleet batch -> private Suede Labs companions, not in this pack: suede-full-send and suede-codex-fleet. In either mode, return here for the dual certainty record.
  • From those skills, route a video-to-long-form bridge, moment score, rights route, exact approval bundle, and readback back to suede-clip-to-guide.
Files (suede-creator-skills)
  • agents
    • openai.yaml 410 B
      interface:
        display_name: "Suede Clip to Guide"
        short_description: "Turn video moments into long-form content funnels"
        default_prompt: "Use $suede-clip-to-guide to turn this video moment and guide into a rights-aware, platform-native funnel package ready for exact-content approval, with the dual certainty gate when Max Effort or Worker Fleet controls the run."
      policy:
        allow_implicit_invocation: true
      
  • evals
    • evals.json 8.7 KB
      {
        "skill_name": "suede-clip-to-guide",
        "evals": [
          {
            "id": 1,
            "prompt": "I have a 37-second clip from my own podcast and an X Article that explains the full framework. Make one of those video-plus-guide posts.",
            "expected_output": "Should use the default success blueprint, verify the article and owned-footage claim, score the moment out of 10, create a clip brief, exact funnel post, verified platform sequence, measurement plan, and exact approval bundle. It must not publish before exact-content and visible-identity approval.",
            "assertions": [
              "Uses the default success blueprint",
              "Records the original-footage rights basis",
              "Scores the moment and requires at least 8/10",
              "Bridges the exact question created by the clip to the article",
              "Produces exact post copy and one CTA",
              "Returns an exact-content approval bundle",
              "Does not publish without approval"
            ],
            "files": [
              "references/package-template.md"
            ]
          },
          {
            "id": 2,
            "prompt": "Use this 45-second clip from someone else's conference talk with my guide. I don't have permission, but I will add commentary and credit them.",
            "expected_output": "Should read the third-party rights reference, explain that credit, short duration, public availability, and added commentary do not settle fair use, identify the likely owner, prefer a native repost or original response clip, and offer a fair-use-review package that records all four factors without granting legal clearance. Publication must remain blocked until the accountable owner records a decision.",
            "assertions": [
              "Loads the third-party video rights reference",
              "Does not treat credit as permission",
              "Does not treat 45 seconds as an automatic safe duration",
              "Offers native repost or original commentary alternatives",
              "Records all four fair-use factors when requested",
              "Does not grant legal clearance",
              "Keeps publication blocked pending an accountable decision"
            ],
            "files": [
              "references/third-party-video-rights.md",
              "references/package-template.md"
            ]
          },
          {
            "id": 3,
            "prompt": "The video is public and everyone on X clips these talks. Just download it and post it with my article.",
            "expected_output": "Should reject public availability and common practice as a rights basis, use the halt format for re-uploading, and offer three bounded routes: obtain permission, use a native repost with analysis, or make an original response clip. It should not download or re-upload the footage.",
            "assertions": [
              "Rejects public availability as permission",
              "Rejects everyone-does-it as a rights basis",
              "Uses the halt format",
              "Offers permission, native repost, and original-response options",
              "Does not download or re-upload the footage"
            ],
            "files": [
              "references/third-party-video-rights.md"
            ]
          },
          {
            "id": 4,
            "prompt": "Here is a transcript and my published provenance guide. Pick the best three clips and build a small pilot.",
            "expected_output": "Should score candidate moments on opening clarity, standalone value, guide bridge, claim support, and audience fit. It should select up to three only when each reaches 8/10 with claim support and guide bridge both at 2, then return three distinct packages and a comparable-baseline decision rule. It must not force three when fewer pass.",
            "assertions": [
              "Scores all five moment dimensions",
              "Enforces the 8/10 threshold",
              "Requires claim support and guide bridge at 2",
              "Selects no more than three qualifying packages",
              "Does not force weak clips to fill the pilot",
              "Defines a comparable baseline and decision rule"
            ],
            "files": [
              "references/package-template.md"
            ]
          },
          {
            "id": 5,
            "prompt": "Edit my raw footage, color grade it, add animated captions, and export vertical versions for Reels and Shorts.",
            "expected_output": "Should recognize full video production and export work, route it to suede-video, and state that the completed exports can return to suede-clip-to-guide only if a guide bridge is also needed.",
            "assertions": [
              "Recognizes full video production work",
              "Routes to suede-video",
              "Does not pretend the clip-to-guide package validator edits media",
              "Explains the return route when a guide bridge is needed"
            ],
            "files": []
          },
          {
            "id": 6,
            "prompt": "Plan my full 30-day social calendar across X, LinkedIn, Instagram, and Facebook.",
            "expected_output": "Should recognize this as general social strategy and calendar work, route it to suede-social, and avoid expanding suede-clip-to-guide into a complete channel plan.",
            "assertions": [
              "Recognizes general social-calendar work",
              "Routes to suede-social",
              "Does not build a full calendar with this narrower skill"
            ],
            "files": []
          },
          {
            "id": 7,
            "prompt": "Write the entire 2,500-word guide about creator provenance first, then make the video post.",
            "expected_output": "Should brief the guide, route long-form writing to suede-copy and portfolio priority to suede-content-strategy, avoid fabricating a live URL, and resume the clip-to-guide workflow after a reviewable guide draft exists.",
            "assertions": [
              "Routes long-form writing to suede-copy",
              "Routes portfolio priority to suede-content-strategy when needed",
              "Does not fabricate a live guide URL",
              "Resumes only after a reviewable guide draft exists"
            ],
            "files": []
          },
          {
            "id": 8,
            "prompt": "Post it now from whichever Suede account is open.",
            "expected_output": "Should refuse an ambiguous live action because the exact media, copy, guide, identity, and sequence are not approved. It should show the exact approval bundle fields and require visible-identity verification immediately before any action.",
            "assertions": [
              "Does not choose whichever account is open",
              "Requires exact media, copy, guide, identity, and sequence approval",
              "Requires visible-identity verification",
              "Fails closed on ambiguity"
            ],
            "files": []
          },
          {
            "id": 9,
            "prompt": "Max effort on this one clip-to-guide package and double-check it so we can be certain before it goes live.",
            "expected_output": "Should record max-effort execution mode, keep this atomic job with the smallest relevant specialist, and run two distinct evidence passes: production proof and a fresh source-truth review using a different failure lens. It may mark certainty proved only when both checks directly verify the rights route, source claims, guide bridge, exact package, identity, sequence, and validator result and all contradictions are resolved. Otherwise it must return unproved or blocked and keep publication unapproved.",
            "assertions": [
              "Records execution_mode as max-effort",
              "Does not create parallel production lanes for one atomic package",
              "Runs production proof against direct evidence",
              "Runs a distinct fresh-context second pass",
              "Requires both checks and the final verdict to be PROVED",
              "Resets certainty to pending when the checked bundle changes",
              "Keeps publication unapproved on disagreement or missing evidence",
              "Does not claim absolute certainty or legal clearance"
            ],
            "files": [
              "references/package-template.md"
            ]
          },
          {
            "id": 10,
            "prompt": "Use a worker fleet to make 20 clip-to-guide packages, but double-check every one for certainty before anything ships.",
            "expected_output": "Should run the well-specified high-volume batch as a worker fleet, record worker-fleet execution mode, treat each worker self-check as provisional Check 1, and require the controller to inspect source evidence and each assembled package as independent Check 2. A second worker or repeated self-check cannot replace controller review. Only packages with two PROVED checks, resolved contradictions, exact-content approval, and live readback may ship.",
            "assertions": [
              "Runs the high-volume batch as a worker fleet",
              "Records execution_mode as worker-fleet",
              "Treats worker self-checks as provisional",
              "Requires controller inspection as the independent second check",
              "Does not substitute another worker for controller review",
              "Requires two PROVED checks and resolved contradictions",
              "Does not ship unproved or blocked packages"
            ],
            "files": [
              "references/package-template.md"
            ]
          }
        ]
      }
      
  • references
    • example-package.md 4.3 KB
      ---
      campaign: "Creator provenance explainer"
      platform: "X"
      identity: "@ExampleCreator"
      rights_status: "original"
      guide_status: "existing"
      publication_status: "draft"
      execution_mode: "standard"
      certainty_status: "not-required"
      ---
      
      # Clip-to-Guide Package
      
      ## Decision Snapshot
      
      - Goal: Earn qualified guide reads.
      - Audience: Independent creators evaluating provenance tools.
      - Platform: X.
      - Visible identity: @ExampleCreator.
      - Sequence: anchor-first.
      - Blueprint fit: use.
      - Fit evidence: The owned 10/10 moment creates the exact provenance question answered by the existing guide.
      - Next action: Read and bookmark the guide.
      
      ## Source and Rights
      
      - Video source: Original recorded interview file.
      - Video owner: Example Creator.
      - Rights evidence: Owner-supplied original file.
      - Allowed use: Organic social excerpt.
      - Jurisdiction: United States.
      - Transcript source: Owner-supplied transcript.
      - Selected excerpt: A 31-second explanation of why a dated file is evidence, not automatic ownership.
      - Claim qualifications: Preserve the evidence-versus-ownership distinction.
      
      ### Fair-use review
      
      - Purpose and character: Not applicable; original footage.
      - Nature of the source work: Not applicable; original footage.
      - Amount and substantiality: Not applicable; original footage.
      - Effect on the potential market: Not applicable; original footage.
      - Why this exact excerpt is necessary: Not applicable; original footage.
      - Accountable decision owner: Example Creator.
      - Decision or legal-review state: Not required for owned footage.
      
      ## Guide Anchor
      
      - Guide title: A Practical Guide to Creator Provenance
      - Guide URL: https://example.com/creator-provenance
      - Publication state: Published.
      - Promise: Explain what provenance records can and cannot prove.
      - Question the clip creates: What evidence should a creator preserve?
      - Answer the guide delivers: A step-by-step evidence checklist.
      
      ## Clip Brief
      
      - In timestamp: 00:12:08
      - Out timestamp: 00:12:39
      - Target duration: 31 seconds.
      - Moment score: 10/10.
      - Exact opening: "A timestamp is evidence. It is not automatic ownership."
      - Subtitle text: Match the verified transcript.
      - On-screen source credit: Original interview — Example Creator.
      - Ending bridge: "The full evidence checklist is in the guide."
      - Export owner: Example Creator.
      - Media file: not available.
      
      ## Funnel Post
      
      ### Exact post text
      
      A timestamp is evidence. It is not automatic ownership.
      
      That distinction matters whenever creators document provenance.
      
      Watch the 31-second explanation, then use the full evidence checklist in the guide below.
      
      Read and bookmark: https://example.com/creator-provenance
      
      ### Copy checks
      
      - Hook matches the clip: Yes.
      - Claim language matches the source: Yes.
      - Guide bridge is explicit: Yes.
      - One CTA only: Yes.
      - Platform composer verified: Pending live execution.
      
      ## Publish Sequence
      
      1. Verify the guide URL and article rendering.
      2. Publish the approved clip post with the verified guide link.
      3. Read back the public permalink, account identity, media, copy, and guide URL.
      
      ## Measurement
      
      - Baseline: Median of the account's five most recent comparable original-video posts.
      - Observation window: Seven days.
      - Clip metric: Completion rate where exposed.
      - Guide metric: Tracked guide opens.
      - Campaign action: Guide bookmarks.
      - Decision rule: Test a second package only if the guide-open rate meets or exceeds the comparable median without a drop in qualified replies.
      
      ## Certainty Gate
      
      - Required: No; standard execution mode.
      - Checked artifact version/hash: not required.
      - Check 1 owner/process: not required.
      - Check 1 evidence: not required.
      - Check 1 verdict: NOT-REQUIRED.
      - Check 2 owner/process: not required.
      - Check 2 evidence: not required.
      - Check 2 verdict: NOT-REQUIRED.
      - Contradictions resolved: not required.
      - Final certainty verdict: NOT-REQUIRED.
      
      ## Approval Gate
      
      - Exact media approved: No.
      - Exact post text approved: No.
      - Exact guide and URL approved: No.
      - Exact identity approved: No.
      - Exact sequence approved: No.
      - Approved by: not available.
      - Approval timestamp: not available.
      
      ## Verification
      
      - Package validation: Pending validator run.
      - Live permalink: not available.
      - Visible identity: not verified for live execution.
      - Rendered media or source reference: not available.
      - Guide readback: not performed.
      - Publication timestamp: not available.
      - Caveats: Illustrative example only; no live action is authorized.
      
    • package-template.md 3 KB
      # Clip-to-Guide Package Template
      
      Use this structure for every durable package. Keep URLs and timestamps exact.
      Use `not available` instead of inventing a value.
      Max Effort and Worker Fleet packages need two distinct evidence records and a
      final `PROVED` verdict before approval or publication.
      
      ```markdown
      ---
      campaign: "<short campaign name>"
      platform: "<platform>"
      identity: "<visible account identity>"
      rights_status: "<original|licensed|permission-recorded|native-repost-only|fair-use-review|blocked>"
      guide_status: "<existing|drafted|needs-long-form|blocked>"
      publication_status: "<draft|approved|published|blocked>"
      execution_mode: "<standard|max-effort|worker-fleet>"
      certainty_status: "<not-required|pending|proved|unproved|blocked>"
      ---
      
      # Clip-to-Guide Package
      
      ## Decision Snapshot
      
      - Goal:
      - Audience:
      - Platform:
      - Visible identity:
      - Sequence: <anchor-first|clip-first|native-repost>
      - Blueprint fit: <use|revise|do-not-use>
      - Fit evidence:
      - Next action:
      
      ## Source and Rights
      
      - Video source:
      - Video owner:
      - Rights evidence:
      - Allowed use:
      - Jurisdiction:
      - Transcript source:
      - Selected excerpt:
      - Claim qualifications:
      
      ### Fair-use review
      
      - Purpose and character:
      - Nature of the source work:
      - Amount and substantiality:
      - Effect on the potential market:
      - Why this exact excerpt is necessary:
      - Accountable decision owner:
      - Decision or legal-review state:
      
      ## Guide Anchor
      
      - Guide title:
      - Guide URL:
      - Publication state:
      - Promise:
      - Question the clip creates:
      - Answer the guide delivers:
      
      ## Clip Brief
      
      - In timestamp:
      - Out timestamp:
      - Target duration:
      - Moment score:
      - Exact opening:
      - Subtitle text:
      - On-screen source credit:
      - Ending bridge:
      - Export owner:
      - Media file:
      
      ## Funnel Post
      
      ### Exact post text
      
      <exact copy>
      
      ### Copy checks
      
      - Hook matches the clip:
      - Claim language matches the source:
      - Guide bridge is explicit:
      - One CTA only:
      - Platform composer verified:
      
      ## Publish Sequence
      
      1. <first action>
      2. <second action>
      3. <readback action>
      
      ## Measurement
      
      - Baseline:
      - Observation window:
      - Clip metric:
      - Guide metric:
      - Campaign action:
      - Decision rule:
      
      ## Certainty Gate
      
      - Required: <yes|no>
      - Checked artifact version/hash:
      - Check 1 owner/process:
      - Check 1 evidence:
      - Check 1 verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED>
      - Check 2 owner/process:
      - Check 2 evidence:
      - Check 2 verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED>
      - Contradictions resolved:
      - Final certainty verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED>
      
      ## Approval Gate
      
      - Exact media approved:
      - Exact post text approved:
      - Exact guide and URL approved:
      - Exact identity approved:
      - Exact sequence approved:
      - Approved by:
      - Approval timestamp:
      
      ## Verification
      
      - Package validation:
      - Live permalink:
      - Visible identity:
      - Rendered media or source reference:
      - Guide readback:
      - Publication timestamp:
      - Caveats:
      ```
      
      For chat-only delivery, mirror these headings and state that no saved package
      was validated. For a saved package, validate with:
      
      ```bash
      python3 scripts/validate_package.py path/to/package.md
      ```
      
    • third-party-video-rights.md 3 KB
      # Third-Party Video Rights Review
      
      Read this reference whenever the video is not demonstrably original, licensed,
      or permission-recorded. This is a risk-recording workflow, not legal advice or
      legal clearance.
      
      ## Current primary sources
      
      - U.S. Copyright Office, Fair Use:
        https://www.copyright.gov/fair-use/more-info.html
      - U.S. Copyright Office, Fair Use FAQ:
        https://www.copyright.gov/help/faq/faq-fairuse.html
      - X Fair Use Policy:
        https://help.x.com/en/rules-and-policies/fair-use-policy
      - X Copyright Policy:
        https://help.x.com/en/rules-and-policies/copyright-policy
      
      Verify these pages again when platform rules, jurisdiction, or the planned use
      changes.
      
      ## Review sequence
      
      1. Identify the likely copyright owner. The speaker, subject, uploader,
         organizer, camera operator, producer, and rights holder may be different
         people or entities.
      2. Check the source page, event terms, license, press kit, and written
         permission. Record the evidence; do not treat silence as permission.
      3. Prefer a native quote, repost, stitch, duet, embed, or link when it achieves
         the goal. This avoids making a new upload but does not create legal
         clearance.
      4. If the campaign requires a copied excerpt without permission, record all
         four U.S. fair-use factors:
         - purpose and character, including what new commentary, criticism,
           explanation, or context is added;
         - nature of the copyrighted work;
         - amount and substantiality, including whether the excerpt takes the
           qualitative heart of the work;
         - effect on the actual or potential market, including whether the post acts
           as a substitute.
      5. Use no more of the source than the documented commentary requires. There is
         no automatic safe duration, word count, or percentage.
      6. Put the new analysis in the media or immediate presentation, not only in a
         distant guide. Preserve source credit, links, watermarks, and provenance.
      7. Record the accountable owner's decision. If the factors remain uncertain or
         the use is commercially material, request qualified legal review.
      
      ## Decision states
      
      - `native-repost-only` — use only the platform's built-in sharing route.
      - `fair-use-review` — analysis is prepared; publication remains blocked until
        the accountable owner records a decision.
      - `blocked` — the review does not support proceeding, the source owner objects,
        a prior takedown exists, or the decision owner is unavailable.
      
      ## Hard stops
      
      Return the skill halt format when:
      
      - ownership or source provenance cannot be identified;
      - the planned post substitutes for the original work;
      - the excerpt is longer than the commentary needs;
      - the use relies only on credit, short duration, public availability, or
        "everyone does it";
      - the same material was previously removed or the rights holder objected;
      - the user asks the skill to guarantee fair use or immunity from a complaint.
      
      X states that it cannot determine whether a use is fair use, that courts decide
      case by case, and that repeat copyright complaints may lead to account
      suspension. Keep those two risks visible in the approval bundle.
      
  • scripts
    • validate_package.py 8.3 KB
      #!/usr/bin/env python3
      """Validate a durable Suede clip-to-guide Markdown package."""
      
      from __future__ import annotations
      
      import re
      import sys
      from pathlib import Path
      
      
      REQUIRED_FIELDS = {
          "campaign",
          "platform",
          "identity",
          "rights_status",
          "guide_status",
          "publication_status",
          "execution_mode",
          "certainty_status",
      }
      
      ALLOWED_VALUES = {
          "rights_status": {
              "original",
              "licensed",
              "permission-recorded",
              "native-repost-only",
              "fair-use-review",
              "blocked",
          },
          "guide_status": {"existing", "drafted", "needs-long-form", "blocked"},
          "publication_status": {"draft", "approved", "published", "blocked"},
          "execution_mode": {"standard", "max-effort", "worker-fleet"},
          "certainty_status": {
              "not-required",
              "pending",
              "proved",
              "unproved",
              "blocked",
          },
      }
      
      REQUIRED_HEADINGS = [
          "# Clip-to-Guide Package",
          "## Decision Snapshot",
          "## Source and Rights",
          "### Fair-use review",
          "## Guide Anchor",
          "## Clip Brief",
          "## Funnel Post",
          "### Exact post text",
          "## Publish Sequence",
          "## Measurement",
          "## Certainty Gate",
          "## Approval Gate",
          "## Verification",
      ]
      
      UNRESOLVED_VALUES = {
          "",
          "pending",
          "not available",
          "not required",
          "blocked",
          "none",
          "n/a",
      }
      
      
      def parse_frontmatter(text: str) -> tuple[dict[str, str], list[str]]:
          errors: list[str] = []
          if not text.startswith("---\n"):
              return {}, ["missing opening YAML frontmatter delimiter"]
      
          end = text.find("\n---\n", 4)
          if end < 0:
              return {}, ["missing closing YAML frontmatter delimiter"]
      
          fields: dict[str, str] = {}
          for line_number, line in enumerate(text[4:end].splitlines(), start=2):
              if not line.strip():
                  continue
              match = re.fullmatch(r"([a-z_]+):\s*[\"']?(.+?)[\"']?\s*", line)
              if not match:
                  errors.append(f"frontmatter line {line_number} is not key: value")
                  continue
              key, value = match.groups()
              fields[key] = value
      
          return fields, errors
      
      
      def bullet_value(text: str, label: str) -> str | None:
          match = re.search(rf"(?mi)^-\s*{re.escape(label)}:\s*(.+)$", text)
          return match.group(1).strip() if match else None
      
      
      def validate(path: Path) -> list[str]:
          errors: list[str] = []
          try:
              text = path.read_text(encoding="utf-8")
          except (OSError, UnicodeError) as exc:
              return [f"cannot read {path}: {exc}"]
      
          fields, frontmatter_errors = parse_frontmatter(text)
          errors.extend(frontmatter_errors)
      
          missing_fields = sorted(REQUIRED_FIELDS - fields.keys())
          if missing_fields:
              errors.append(f"missing frontmatter fields: {', '.join(missing_fields)}")
      
          for field, allowed in ALLOWED_VALUES.items():
              value = fields.get(field)
              if value is not None and value not in allowed:
                  errors.append(
                      f"{field} must be one of {', '.join(sorted(allowed))}; got {value!r}"
                  )
      
          for heading in REQUIRED_HEADINGS:
              if not re.search(rf"(?m)^{re.escape(heading)}\s*$", text):
                  errors.append(f"missing heading: {heading}")
      
          if re.search(r"\b(?:TODO|TBD|PLACEHOLDER)\b", text, flags=re.IGNORECASE):
              errors.append("contains TODO, TBD, or PLACEHOLDER text")
      
          rights_status = fields.get("rights_status")
          publication_status = fields.get("publication_status")
          guide_status = fields.get("guide_status")
          execution_mode = fields.get("execution_mode")
          certainty_status = fields.get("certainty_status")
      
          if publication_status in {"approved", "published"}:
              if rights_status == "blocked" or guide_status == "blocked":
                  errors.append(
                      f"{publication_status} package cannot have blocked rights or guide status"
                  )
      
          if rights_status == "fair-use-review" and publication_status in {
              "approved",
              "published",
          }:
              decision_match = re.search(
                  r"(?mi)^-\s*Decision or legal-review state:\s*(.+)$", text
              )
              owner_match = re.search(
                  r"(?mi)^-\s*Accountable decision owner:\s*(.+)$", text
              )
              unresolved = {"pending", "not available", "blocked", "not reviewed"}
              if not decision_match or decision_match.group(1).strip().lower() in unresolved:
                  errors.append(
                      "approved fair-use-review package needs a resolved accountable decision"
                  )
              if not owner_match or owner_match.group(1).strip().lower() in unresolved:
                  errors.append(
                      "approved fair-use-review package needs an accountable decision owner"
                  )
      
          certainty_required = execution_mode in {"max-effort", "worker-fleet"}
          if certainty_required and certainty_status == "not-required":
              errors.append(f"{execution_mode} package requires the dual certainty gate")
      
          if certainty_required and publication_status in {"approved", "published"}:
              if certainty_status != "proved":
                  errors.append(
                      f"{publication_status} {execution_mode} package needs "
                      "certainty_status: proved"
                  )
      
          if certainty_required and certainty_status == "proved":
              check_labels = [
                  "Checked artifact version/hash",
                  "Check 1 owner/process",
                  "Check 1 evidence",
                  "Check 1 verdict",
                  "Check 2 owner/process",
                  "Check 2 evidence",
                  "Check 2 verdict",
                  "Contradictions resolved",
                  "Final certainty verdict",
              ]
              values = {label: bullet_value(text, label) for label in check_labels}
      
              for label, value in values.items():
                  if value is None or value.rstrip(".").strip().lower() in UNRESOLVED_VALUES:
                      errors.append(f"proved certainty gate needs resolved {label}")
      
              for label in ("Check 1 verdict", "Check 2 verdict", "Final certainty verdict"):
                  value = values[label]
                  if value is not None and value.rstrip(".").strip().upper() != "PROVED":
                      errors.append(f"{label} must be PROVED when certainty_status is proved")
      
              check_1 = values["Check 1 owner/process"]
              check_2 = values["Check 2 owner/process"]
              if (
                  check_1 is not None
                  and check_2 is not None
                  and check_1.rstrip(".").strip().casefold()
                  == check_2.rstrip(".").strip().casefold()
              ):
                  errors.append(
                      "proved certainty gate needs two distinct check owners or processes"
                  )
      
              evidence_1 = values["Check 1 evidence"]
              evidence_2 = values["Check 2 evidence"]
              if (
                  evidence_1 is not None
                  and evidence_2 is not None
                  and evidence_1.rstrip(".").strip().casefold()
                  == evidence_2.rstrip(".").strip().casefold()
              ):
                  errors.append(
                      "proved certainty gate needs two distinct evidence records"
                  )
      
              if execution_mode == "worker-fleet":
                  normalized_check_1 = (check_1 or "").casefold()
                  normalized_check_2 = (check_2 or "").casefold()
                  if "worker" not in normalized_check_1 or "self-check" not in normalized_check_1:
                      errors.append(
                          "proved worker-fleet gate needs a worker self-check as Check 1"
                      )
                  if "controller" not in normalized_check_2:
                      errors.append(
                          "proved worker-fleet gate needs controller review as Check 2"
                      )
      
          if publication_status == "published":
              if not re.search(r"(?mi)^-\s*Live permalink:\s*https?://\S+", text):
                  errors.append("published package needs a public Live permalink URL")
              if not re.search(r"(?mi)^-\s*Publication timestamp:\s*\S+", text):
                  errors.append("published package needs a publication timestamp")
      
          return errors
      
      
      def main(argv: list[str]) -> int:
          if len(argv) != 2:
              print("Usage: validate_package.py path/to/clip-to-guide-package.md", file=sys.stderr)
              return 2
      
          path = Path(argv[1]).expanduser()
          errors = validate(path)
          if errors:
              print(f"FAIL {path}")
              for error in errors:
                  print(f"- {error}")
              return 1
      
          print(f"PASS {path}")
          return 0
      
      
      if __name__ == "__main__":
          raise SystemExit(main(sys.argv))
      
  • CARD.md 4.8 KB
    # Skill Card — Suede Clip to Guide
    
    <!-- Generated by scripts/build-skill-cards.mjs — do not hand-edit. -->
    <!-- Regenerate with: npm run build:cards -->
    
    Release record for the `suede-clip-to-guide` skill, following the NVIDIA skill-card template (<https://docs.nvidia.com/skills/skill-cards>). It tells a reviewer what the skill does, who owns it, what it needs, what could go wrong, and what evidence backs the release — without requiring them to open the source first.
    
    ## Description
    
    Suede-owned short-to-long content funnel blueprint.
    
    Status: production. Ships in the `suede-skills` plugin (the full pack) at release 0.19.0; loads as a Claude Code / Codex agent skill from this directory's [SKILL.md](./SKILL.md).
    
    ## Owner
    
    Jason Colapietro, Suede Labs AI (<https://github.com/JasonColapietro>). Security contact: `info@suedeai.ai` per [SECURITY.md](../../SECURITY.md).
    
    ## License / Terms of Use
    
    MIT ([LICENSE](../../LICENSE)). The pack's combined license expression is `MIT AND BSD-3-Clause`; this skill bundles no third-party licensed material of its own.
    
    ## Use Case
    
    Target users: developers and creators running the skill inside a Claude Code or Codex CLI session.
    
    Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when third-party footage needs a rights route before reuse.
    
    Out of scope — full video editing or production (use suede-video), general social calendars or listening (use suede-social), creating the long-form asset from scratch (use suede-copy and suede-content-strategy), paid ads (use suede-ad-creative), or publishing or reposting without exact-content and visible-identity approval.
    
    ## Deployment Geography
    
    Global. The skill is a prompt-and-script package that runs locally inside the invoking agent session; it pins no region-specific service of its own.
    
    ## Requirements / Dependencies
    
    - A Claude Code or Codex CLI session with the `suede-skills` plugin installed (install options: <https://skills.suedeai.ai/>).
    - Bundled files loaded relative to this directory: `agents/` (1 file), `scripts/` (1 file), `references/` (3 files).
    - Credentials: none are bundled or required by the skill files. Any tool or API credentials come from the host session; never paste credentials into skill files, prompts, or outputs.
    
    ## Known Risks and Mitigations
    
    - Risk: an agent treats a quality gate as autonomous authority. Mitigation: every gate in the pack is advisory — it changes what is reported, never what the user decided; only extreme-risk findings (data loss, credential exposure, legal/rights violations, payment mistakes, irreversible public damage) pause for the user's explicit choice.
    - Risk: a skill instruction is used to act outside its mandate. Mitigation: the hard limits in the skill body's "Boundaries" section, quoted below.
    
    From "Boundaries":
    
    - Do not download, clip, or re-upload third-party footage without a recorded rights basis or an accountable fair-use decision.
    - Do not give legal clearance or label uncertain reuse as fair use.
    - Do not invent transcripts, timestamps, permissions, URLs, performance, audience demand, or platform capabilities.
    - Do not publish or schedule without exact-content approval and visible-identity verification.
    - Do not alter a source quote to make the hook stronger.
    - Do not describe the campaign as successful until current analytics support the named decision rule.
    - Do not call a Max Effort or Fleet package certain, approved, or publishable when either required check is `UNPROVED` or `BLOCKED`.
    
    ## References
    
    - Skill source: [`skills/suede-clip-to-guide/SKILL.md`](./SKILL.md)
    - Rendered reference page: <https://skills.suedeai.ai/skills/suede-clip-to-guide.html>
    - Security policy and reviewed scanner exceptions: [SECURITY.md](../../SECURITY.md) and [`.plugin-scanner.toml`](../../.plugin-scanner.toml) at the repo root
    
    ## Skill Output
    
    Markdown analysis and recommendations returned in the agent's response. The skill publishes, posts, and sends nothing without the user's explicit authorization; delivery decisions stay with the user.
    
    ## Skill Version
    
    0.19.0 — the pack is single-versioned, so every skill releases together; see [VERSION](../../VERSION) and [CITATION.cff](../../CITATION.cff) for the release identifier this card describes.
    
    ## Ethical Considerations
    
    - The skill produces recommendations for a human decision-maker. Publishing, sending, payment, and rights decisions stay with the user.
    - Its gates require verifiable claims and honest reporting; do not use the skill to fabricate claims, evidence, metrics, or attribution.
    - Report suspected misuse or a security concern privately per [SECURITY.md](../../SECURITY.md); do not open a public issue for it.
    
  • SKILL.md 16.3 KB
    ---
    name: suede-clip-to-guide
    description: "Suede-owned short-to-long content funnel blueprint. Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when third-party footage needs a rights route before reuse. NOT FOR: full video editing or production (use suede-video), general social calendars or listening (use suede-social), creating the long-form asset from scratch (use suede-copy and suede-content-strategy), paid ads (use suede-ad-creative), or publishing or reposting without exact-content and visible-identity approval."
    metadata:
      version: 1.0.0
    ---
    
    # Suede Clip to Guide
    
    Build one evidence-backed path from a video moment to a deeper written asset.
    Treat the clip as the attention layer and the guide as the authority layer. Do
    not assume the pattern performs; test the bridge against the account baseline.
    
    ## Default Success Blueprint
    
    Use this as the recommended pattern when the rights, source, claim, platform,
    and approval gates pass:
    
    ```text
    Useful guide with one promise
            ↓
    Self-contained video moment
            ↓
    Rights route + 8/10 moment score
            ↓
    Clip hook + source credit + subtitles
            ↓
    Post explains why the moment matters
            ↓
    One explicit bridge to the guide
            ↓
    Max Effort/Fleet: dual certainty gate
            ↓
    Exact-content approval
            ↓
    Public readback + clip-to-guide measurement
            ↓
    Keep, revise, or stop from the observed result
    ```
    
    Prefer this blueprint when:
    
    - a guide already answers the natural next question created by the clip;
    - the goal is deeper understanding, bookmarks, qualified replies, leads, or
      authority rather than raw views alone;
    - the selected moment passes the 8/10 score and claim-support threshold;
    - the rights route and current platform sequence are recorded;
    - the account can observe at least one clip metric and one guide-transition or
      campaign metric.
    
    Do not use it when:
    
    - the guide is thin, unrelated, unpublished without a stable draft, or has no
      specific promise;
    - the clip needs missing context, distorts the source, or exists only because
      it is popular;
    - third-party reuse is blocked or the accountable fair-use decision is absent;
    - the platform cannot preserve the source, clip, and guide bridge in a verified
      sequence;
    - the idea is complete in the short post and the guide would add no depth.
    
    For a first test, build three distinct packages only when three moments pass all
    gates. Compare them with the account's recent comparable posts. Keep the pattern
    only if the named guide-transition or campaign metric meets the decision rule;
    revise one variable at a time when it does not.
    
    ## Non-Negotiable Gates
    
    Apply these throughout the run. Resolve rights, source, and claims before
    writing copy; resolve platform, certainty, and approval before a live action:
    
    1. **Rights gate** — classify the video as owned, licensed, permission-recorded,
       native-repost-only, fair-use-review, or blocked. Public availability is not
       reuse permission.
    2. **Source gate** — obtain the video, transcript or exact timestamps, guide
       draft or URL, target platform, intended account, and desired next action.
    3. **Claim gate** — trace factual claims and quotations to the source. Label
       interpretations as interpretations.
    4. **Platform gate** — inspect current official requirements and the live
       composer before promising that media, quote-posts, article cards, links, or
       replies can be combined.
    5. **Approval gate** — do not publish, schedule, repost, upload, reply, or edit
       a live article until the user approves the exact media, copy, guide, account,
       and sequence.
    6. **Certainty gate** — when a max-effort or worker-fleet controller runs this
       skill, require two distinct evidence checks before marking a package
       approved or published. A worker conclusion is not the second check.
    
    When a blocking gate fails, stop the affected action and return:
    
    ```text
    HALT — <one-line blocker>
    Options:
    1. <bounded resolution>
    2. <bounded resolution>
    3. <bounded resolution, if useful>
    Waiting on: <specific evidence or approval>
    ```
    
    Continue only on independent draft work that does not bypass the blocker.
    
    ### Rationalizations that precede a violation
    
    Each excuse below shows up immediately before a gate gets skipped. When one
    appears in your own reasoning or in the request, treat it as the signal to run
    the gate, not to waive it.
    
    | Excuse | Reality |
    |---|---|
    | "It's only 12 seconds." | Duration is not a rights basis. The clip still needs an owned, licensed, permission-recorded, native-repost, or accountable fair-use route. |
    | "I credited the source." | Credit is attribution, not clearance. A blocked or unreviewed source stays blocked with a credit line attached. |
    | "It's public, so it's reusable." | Public availability is not reuse permission. Classify the video before writing copy. |
    | "The composer accepted it, so it published." | A prepared composer, scheduled item, or click is not a publication. Only the public permalink readback proves it. |
    | "The worker already checked it." | Under Max Effort or Worker Fleet a worker conclusion is one check. The certainty gate needs a second, independent one. |
    | "The guide is basically finished." | An unpublished guide with no stable draft or specific promise fails the fit test. Build the bridge to something that exists. |
    | "The moment is getting traction, so ship it." | Popularity is not the score. A moment below 8/10, or below 2 on claim support or guide bridge, does not qualify. |
    
    ## Workflow
    
    ### 1. Define the funnel contract
    
    Capture:
    
    - campaign goal: article reads, bookmarks, qualified replies, profile visits,
      leads, or another named action;
    - target platform and visible posting identity;
    - video source URL or file, owner, transcript availability, and candidate
      timestamps;
    - guide title, URL or draft, its promise, and current publication state;
    - audience and one next action;
    - whether the user wants a private draft, scheduled package, or live execution.
    
    If product-marketing context exists in `.agents/product-marketing.md`,
    `.claude/product-marketing.md`, or `product-marketing-context.md`, read it
    before asking for information already covered there.
    
    ### 2. Choose a lawful video route
    
    | Rights status | Allowed route |
    |---|---|
    | `original` | Cut and publish within the user's approved scope. |
    | `licensed` | Follow the license terms and record the evidence. |
    | `permission-recorded` | Follow the exact approved platforms, duration, credit, and edit scope. |
    | `native-repost-only` | Use the platform's native quote, repost, stitch, duet, embed, or link path. Do not download and re-upload. Treat this as an operational sharing route, not legal clearance. |
    | `fair-use-review` | Prepare a four-factor review for commentary, criticism, news reporting, teaching, scholarship, or research. Do not label the use fair or publish until the accountable owner records the decision. |
    | `blocked` | Do not use the footage. Offer an original commentary clip, a permission request, or a source link instead. |
    
    For any source that is not original, licensed, or permission-recorded, read
    [references/third-party-video-rights.md](references/third-party-video-rights.md).
    Do not infer fair use, ownership, or permission. Shortness, credit, a public
    source, or added commentary alone does not settle fair use. Do not remove
    watermarks, attribution, or provenance. Prefer a native repost with added
    analysis or create an original camera or screen-recorded response that
    summarizes the idea without copying the footage.
    
    ### 3. Establish the guide anchor
    
    The long-form asset must have:
    
    - one specific promise that the clip can honestly introduce;
    - a title and stable draft or URL;
    - enough depth to reward the transition from short to long;
    - sources for material factual claims;
    - one next action that matches the campaign goal.
    
    If the guide does not exist, return a brief and route the full draft to
    `suede-copy` and the portfolio decision to `suede-content-strategy`. Resume this
    skill after the guide has a reviewable draft. Do not fabricate a live URL.
    
    ### 4. Score candidate moments
    
    Score each candidate from 0 to 2 on five dimensions:
    
    | Dimension | 0 | 1 | 2 |
    |---|---|---|---|
    | Opening clarity | Premise is missing | Premise arrives late | Premise is clear in 1–3 seconds |
    | Standalone value | Needs surrounding context | Partly self-contained | Complete useful idea or story |
    | Guide bridge | Unrelated | Adjacent | Naturally creates the next question the guide answers |
    | Claim support | Unverifiable or misleading | Needs qualification | Directly supported and correctly framed |
    | Audience fit | No named audience fit | Broad fit | Solves a named audience problem |
    
    Select a moment only when it scores at least 8/10, claim support is 2, guide
    bridge is 2, and the rights gate passes. If none qualify, return the scorecard
    and request a better source instead of forcing a clip.
    
    ### 5. Build the package
    
    Read [references/package-template.md](references/package-template.md) and
    produce:
    
    1. **Decision snapshot** — goal, audience, platform, identity, and chosen
       sequence.
    2. **Source and rights record** — owner, source, evidence, transcript excerpt,
       permitted route, jurisdiction, and any four-factor review.
    3. **Guide anchor** — exact title, promise, URL or draft state, and the question
       it answers after the clip.
    4. **Clip brief** — in/out timestamps, target duration, exact opening, subtitle
       text, on-screen credit, ending bridge, and export owner.
    5. **Funnel post** — exact text with four jobs:
       - hook the video moment;
       - explain why it matters;
       - bridge to the deeper guide;
       - give one specific next action.
    6. **Publish sequence** — one of the verified patterns below.
    7. **Measurement plan** — baseline, observation window, and decision rule.
    8. **Certainty record** — execution mode, two check owners or processes,
       direct evidence, contradictions, and final verdict.
    9. **Approval bundle** — exact media, post copy, guide, identity, and sequence.
    
    Do not pad the post with generic setup, unsupported performance language, or
    multiple competing calls to action.
    
    ### 6. Choose a verified sequence
    
    Use one:
    
    - **Anchor-first** — publish or verify the guide, then publish the clip-led post
      that references it.
    - **Clip-first** — publish the clip, then place the guide in the platform's
      verified companion location, such as a first reply or supported link field.
    - **Native-repost** — quote or repost the third-party source with original
      analysis and a guide bridge; do not re-upload the source media.
    
    Do not assume a quote-post can also carry new media. Verify the current composer
    and choose the smallest sequence that preserves the clip, guide, and source
    credit.
    
    ### 7. Run the dual certainty gate when required
    
    Record `execution_mode` as `standard`, `max-effort`, or `worker-fleet`. Standard
    mode may record `certainty_status: not-required`. Max Effort and Worker Fleet
    must run both checks and may not mark a package `approved` or `published` until
    `certainty_status: proved`. Record one package version, timestamp, or content
    hash so both checks evaluate the same unchanged artifact.
    
    **Check 1 — production proof**
    
    - Reopen the video or transcript at the selected timestamps.
    - Match the quotation, claim framing, rights evidence, moment score, guide
      promise, bridge, exact copy, identity, sequence, and one CTA to the package.
    - Run the package validator for a saved artifact.
    - In Fleet mode, the fleet worker's acceptance-criteria self-check may satisfy
      this check, but remains provisional.
    
    **Check 2 — independent proof**
    
    - Inspect the source evidence and assembled package directly; do not review
      only Check 1's summary.
    - Use a different failure lens, evidence source, or acceptance criterion and
      try to disprove the rights route, factual framing, guide fit, platform
      sequence, and approval readiness.
    - In Max Effort with useful parallel work, keep the producer and adversarial
      reviewer separate. For one atomic Max Effort job, perform a fresh second pass
      after reloading the source evidence.
    - In Fleet mode, the controller must perform this check and mark the worker
      output `accepted`, `rejected`, or `fix brief`. A second worker or repeated
      self-check does not replace controller review.
    
    Use only:
    
    - `PROVED` — both checks pass with direct evidence and every contradiction is
      resolved;
    - `UNPROVED` — a check is incomplete, indirect, or disagrees with the other;
    - `BLOCKED` — access, authority, rights, or platform state prevents a required
      check.
    
    If either check is not `PROVED`, keep publication unapproved, use the halt
    format, and name the smallest fix or evidence needed. The dual check raises
    confidence; it does not guarantee truth, create legal clearance, or replace
    the live readback. A material change to the media, timestamps, rights evidence,
    guide, copy, identity, sequence, or CTA resets `certainty_status` to `pending`
    and requires both checks again.
    
    ### 8. Require exact-content approval
    
    Before a live action, show:
    
    ```text
    Account:
    Platform:
    Media:
    Source/rights status:
    Guide title and URL:
    Exact post text:
    Publish sequence:
    ```
    
    Approval is valid only for that bundle. If the media, copy, guide URL, account,
    or sequence changes materially, show the changed bundle and obtain approval
    again. Verify the visible identity immediately before acting and fail closed on
    an account mismatch, login challenge, or ambiguous composer.
    
    ### 9. Verify completion
    
    For a saved package, run:
    
    ```bash
    python3 /path/to/suede-clip-to-guide/scripts/validate_package.py path/to/clip-to-guide-package.md
    ```
    
    For a live run, also read back:
    
    - the final public permalink;
    - visible posting identity;
    - rendered post text and media or native source reference;
    - guide URL and publication state;
    - timestamp and any platform warning.
    
    Do not claim publication from a click alone. A complete live run needs the
    public readback. A draft-only run is complete when the package validator passes
    and the approval state is reported as `draft`.
    
    ## Measurement
    
    Choose the smallest comparable window the account can support. Record:
    
    - clip retention or completion where exposed;
    - guide opens or link clicks where exposed;
    - bookmarks, saves, qualified replies, and profile visits;
    - the exact campaign action;
    - a comparable recent baseline.
    
    When the platform exposes compatible denominators, calculate:
    
    ```text
    guide transition rate = verified guide opens / clip-post impressions
    qualified action rate = named qualified actions / verified guide opens
    ```
    
    If compatible denominators are unavailable, report the available counts
    separately. Do not combine mismatched platform windows or call clicks article
    reads.
    
    Change one variable per next test: moment, opening, bridge, sequence, or CTA.
    Do not report causal lift from an unpaired or tiny sample.
    
    ## Boundaries
    
    - Do not download, clip, or re-upload third-party footage without a recorded
      rights basis or an accountable fair-use decision.
    - Do not give legal clearance or label uncertain reuse as fair use.
    - Do not invent transcripts, timestamps, permissions, URLs, performance,
      audience demand, or platform capabilities.
    - Do not publish or schedule without exact-content approval and visible-identity
      verification.
    - Do not alter a source quote to make the hook stronger.
    - Do not describe the campaign as successful until current analytics support
      the named decision rule.
    - Do not call a Max Effort or Fleet package certain, approved, or publishable
      when either required check is `UNPROVED` or `BLOCKED`.
    
    ## Routing
    
    - Need full video editing, generation, captions, color, or exports -> use
      `suede-video`, then return here for the funnel package.
    - Need a general platform plan, calendar, listening, or engagement program ->
      use `suede-social`.
    - Need the long-form guide written -> use `suede-copy`; use
      `suede-content-strategy` for pillars and portfolio priority.
    - Need paid variants -> use `suede-ad-creative`.
    - Need maximum-effort orchestration or a high-volume worker-fleet batch ->
      private Suede Labs companions, not in this pack: suede-full-send and
      suede-codex-fleet. In either mode, return here for the dual certainty record.
    - From those skills, route a video-to-long-form bridge, moment score, rights
      route, exact approval bundle, and readback back to `suede-clip-to-guide`.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related