diff --git a/skills/wrench/SKILL.md b/skills/wrench/SKILL.md index ff2dda2..37c0b09 100644 --- a/skills/wrench/SKILL.md +++ b/skills/wrench/SKILL.md @@ -43,6 +43,7 @@ automation. - Save one private native article draft, including supported plan-bound covers, inline images, and destination-safe source-post references: inspect `articles.draft.save`, then follow [native article drafts](references/article-drafts.md). Keep a provider cover outside the body document; on an exact LinkedIn replacement, omit it only to preserve the independently read existing banner. Never substitute `articles.publish`. - Cross-post one exact text and optional ordered-image package: inspect every installed target schema, then follow [social cross-posting](references/cross-posting.md). - Cross-post one exact video package: require an observed video-capable operation for every selected target, then follow [video social cross-posting](references/cross-posting-video.md). +- When the user supplied the copy, never mark the post as AI-generated on X or any other platform. Do not add "Made with AI" or "Made with Grok" text, leave a composer disclosure toggle on, or set a provider flag such as official `x` `made_with_ai`. If a composer fallback is used and that label cannot be turned off, stop and report instead of posting. - Add a provider without changing Wrench source: author a portable plugin. - Derive a reviewed first-party contract from authorized HAR evidence: follow [the derivation guide](references/derivation.md). diff --git a/skills/wrench/references/cross-posting-video.md b/skills/wrench/references/cross-posting-video.md index 8a5aeb6..f025a28 100644 --- a/skills/wrench/references/cross-posting-video.md +++ b/skills/wrench/references/cross-posting-video.md @@ -38,7 +38,9 @@ Encoding may use a local encoder such as ffmpeg. Posting may not. - If the user provided a caption, use it exactly. Do not rewrite it to pass a provider limit; ask for a shorter shared caption or an explicit - platform-specific variant. + platform-specific variant. Never mark that caption as AI-generated; + follow the unlabeled-copy rule in + [cross-post text and images](cross-posting.md). - If no caption was provided, write one short caption from the video's actual subject: about one sentence, under 120 characters. Do not invent a long marketing paragraph. diff --git a/skills/wrench/references/cross-posting.md b/skills/wrench/references/cross-posting.md index d3c001a..02d9398 100644 --- a/skills/wrench/references/cross-posting.md +++ b/skills/wrench/references/cross-posting.md @@ -17,6 +17,15 @@ If alt text is absent, draft a short factual description from visible image cont Give the package a task-local identity. Preserve image order through planning, settlement, duplicate accounting, and any cleanup assessment. +## Keep user-supplied copy unlabeled + +When the user supplied the copy, never mark the post as AI-generated. This applies to X and every other platform in this workflow. + +- Do not add "Made with AI", "Made with Grok", or similar disclosure text to the body. +- Do not leave a composer AI-disclosure toggle on. +- Do not set a provider metadata flag that labels the post or its media as AI-generated. Official `x` `posts.publish` exposes `made_with_ai`; leave it unset or `false` when the user supplied the copy. `x-web` `posts.publish` has no such input field; do not invent one. Inspect each installed schema for a comparable field and leave it unset or `false`. +- Prefer the Wrench transport. If a composer fallback is used and the AI label cannot be turned off, stop and report that target instead of posting with the label. + ## Preflight every target 1. Run `wrench --help`; if it is unavailable, follow [installation and diagnostics](install.md). diff --git a/skills/wrench/references/social-platform-routing.md b/skills/wrench/references/social-platform-routing.md index 03e3923..606c420 100644 --- a/skills/wrench/references/social-platform-routing.md +++ b/skills/wrench/references/social-platform-routing.md @@ -5,7 +5,7 @@ Use this as routing guidance only. Always inspect `wrench capabilities | Surface | Candidate adapter | Signed-in realm | Reference post shape | Meaning | | --- | --- | --- | --- | --- | | X | `x-web` | Browser cookies/profile | `body`; optional image fields when exposed | Consumer X post | -| X | `x` | Official OAuth | `body`, optional `media` and aligned alt-text fields | Documented API post | +| X | `x` | Official OAuth | `body`, optional `media` and aligned alt-text fields; leave `made_with_ai` unset or `false` when the user supplied the copy | Documented API post | | LinkedIn | `linkedin-web` | Browser cookies/profile | `body`, `visibility`, optional image and accessibility fields | Member or explicitly bound organization post | | LinkedIn | `linkedin` | Official OAuth | Inspect installed schema | Documented API post | | Bluesky | `bluesky-web` | Profile-backed Bluesky web session | `body`, optional image, media type, and alt text | AT Protocol feed post | @@ -27,6 +27,8 @@ unless their installed canonical capability independently says otherwise. - Preserve input image order. Require alt-text arrays to align one-to-one when the schema exposes them. - Re-check capabilities before every new preview. A plan or run remains governed by its bound contract identity when installed support later changes. - A provider may reject an otherwise valid image for dimensions, animation, color profile, or account entitlement. Report that provider-owned failure without converting the file unless the user asks for a derivative. +- When the user supplied the copy, never mark the post as AI-generated on any platform. Do not add "Made with AI" or "Made with Grok" text, leave a composer disclosure toggle on, or set a provider AI-generated flag. Official `x` `posts.publish` exposes `made_with_ai`; leave it unset or `false`. `x-web` `posts.publish` has no such input field. +- If a composer fallback is used and that label cannot be turned off, stop and report the target instead of posting with the label. ## Common invocation shape diff --git a/skills/wrench/references/social-video-platform-routing.md b/skills/wrench/references/social-video-platform-routing.md index 6eea0d3..74e4539 100644 --- a/skills/wrench/references/social-video-platform-routing.md +++ b/skills/wrench/references/social-video-platform-routing.md @@ -36,6 +36,9 @@ installed capability independently says `observed`. - Tags are an explicit platform-specific variant only for TikTok, Instagram, and YouTube Shorts. Leave X, LinkedIn, Substack, and Bluesky tag-free. +- When the user supplied the caption, never mark the video as AI-generated. + Official `x` `posts.publish` exposes `made_with_ai`; leave it unset or + `false`. Do not invent a disclosure field on another adapter. ## Common invocation shape