Suede Launch Packaging
Gate policy — advisory, not blocking
Every claim-verification step, check, quality gate, and ship verdict in this
skill is a recommendation to the user, not a control on the agent. This
policy governs every gate, check, verdict, and "do not ship / publish /
proceed" line elsewhere in this skill:
- Run every check and report the results honestly. Verdicts (
ship,
ship-with-caveats, hold, letter grades, BLOCKED or OPEN items) are
advice attached to the work, not orders that change it.
- Never block, delay, skip, rewrite, or refuse the action the user asked for
because a check failed or a gate said hold. Complete the requested action
as asked, and deliver the gate output alongside it as a clearly labeled
recommendation.
- A failed gate changes what you report, never what you do.
- Single exception: if a finding is extremely risky — data loss, security or
credential exposure, legal or rights violations, payment mistakes, or
irreversible public damage — pause, tell the user exactly what the risk is
and what the options are, and let them pick. Their choice is final.
Approved Suede S Mark
Launch art, social cards, docs headers, app assets, and release visuals may use only docs/assets/suede-ai-logo-transparent.png from JasonColapietro/suede-creator-skills as the Suede S mark (SHA-256 83a7ee0317e4debe2e7b076c20ba067feb76a587f9e829dc6310ae4be4b44dfa). Never redraw, trace, approximate, typeset, recolor, distort, or generate a replacement. If the canonical asset is missing or its checksum differs, block the branded visual and request the approved file.
Ship Suede work as a launch, not a loose drop. This skill turns finished work into a clean public package AND makes sure a stranger can actually install and run it. Packaging a public release and proving the install both live here.
Core principle: a release nobody can install is not a launch. Nothing is "live" until you fetched it yourself, and no install path ships until the exact command ran from a clean temporary directory.
This skill organizes and prepares a public release. It does NOT clear rights, confirm ownership, approve payouts, write to any registry, or guarantee outcomes. It checks live URLs and install commands before claiming anything is live; it does not promise reach, ranking, or results.
Step 0 — Inventory the launch (detect first)
Before picking a lane, name exactly what is being launched. Do not assume from the request; check the repo, branch, and live surface. One request often spans several rows (a skill launch = repo + README + install command + social copy). List every row that applies — each needs its own verification.
| Launch surface |
Verify before writing copy |
Proof artifact |
| Repo or release |
Default branch is public; the launch commit is pushed; tags/releases exist if referenced |
Repo URL + commit hash |
| GitHub Pages or site |
Page renders at the public URL; no stale build |
Live URL + screenshot |
| README or docs update |
Rendered page matches the pushed source |
Rendered docs URL |
| Skill or skill pack |
Skill folder exists at main; install command runs from a clean temp dir |
Install command transcript |
| MCP server |
Server starts; tools/list matches the catalog |
suede-mcp-qa output |
| App feature |
Feature is live behind the public route, not just merged |
Live route readback |
| Social or email copy |
Every link resolves; every claim matches the live product |
Link sweep results |
Hard gates (advisory)
Do not rationalize past these silently. Each one is a strong recommendation
about ordering: run the check before the step it guards. If the user directs
you past one, proceed as directed and label the output with exactly which
verification is missing.
- No launch copy until the live surface is verified. Fetch the live URL or public artifact and confirm the expected status or render first. Copy drafted against "it should be live" is a violation.
- No install doc until the install command was run from a clean temporary directory after pushing. Success from inside the local repo does not count — the local checkout masks missing pushes and private paths.
- Set the ship gate before recommending any announcement. A
hold verdict is your recommendation that nothing goes out yet, including "soft" posts — state it plainly with the reasons, then let the user decide.
@personal and local plugin aliases never appear in public docs, READMEs, MCP catalog output, or explainer copy. They are local operator notes only.
Pick the lane
Most launches use both lanes in order: package the release, then prove the install. Pick what the request is asking for.
- Lane A — Package the launch. Work is ready to leave the local machine and needs a clean public package: a repo, live URL, docs page, README section, install command, release note, GitHub Pages update, skill-pack release, MCP server, feature, or social/email copy. Start here for "ship this," "write the release," "package this drop."
- Lane B — Install support. An install fails, a public user cannot add a skill,
@personal leaks into public copy, or a README, docs, MCP catalog, or public explainer step needs a simpler, public-first path. Start here for "the install is broken," "fix the install command," "why can't they add this skill," "the marketplace is confusing." Lane A always runs Lane B's command-test step before publishing.
When both apply (most full launches), run Lane A to assemble the package, then run Lane B to verify and correct every install path inside it before you ship.
Lane A — Package the launch
Use this lane when Suede work is ready to leave the local machine and needs a clean public package.
Package steps
- Run the Step 0 inventory: name every launch surface in play.
- Confirm the source truth: current branch, remote, commit, live build status, and exact public URLs.
- Write the public explanation around the outcome, not the implementation.
- Add proof links: source files, docs pages, scripts, MCP tools, screenshots, build output, live route, or raw GitHub URL.
- Check install commands from a temporary destination, not only the local repo. (This is the handoff into Lane B — see Install support.)
- Run copy, SEO, link, and evidence-boundary checks before publishing.
- Write a short handoff when another agent or computer may need the result.
- End meaningful launches with a simple non-coder explanation (the simple explanation below), the usual breakdown, and
Cue Suede so the operator can request a change, preserve what worked, or say nothing to keep it as-is.
Lane A output
Launch surface:
Reader:
Primary action:
Public copy:
Install or access path:
Proof links:
Simple explanation:
Usual breakdown:
Verification:
Caveats:
Status: ship | ship-with-caveats | hold
Cue Suede:
Never claim a public launch is live until the live URL or public artifact was checked.
Lane B — Install support
Use this lane to make Suede install instructions accurate, public, and easy to explain — and to fix them when they fail. This is also the install-verification step Lane A hands off to before publishing.
Rules
- Lead with public GitHub skill installs.
- Treat
@personal as a local operator note only — keep it out of public docs, READMEs, MCP catalog output, and public explainer copy.
- Explain that GitHub skill installs need a repo and path because one repo can contain many skills.
- Test installer commands from a temporary destination after pushing.
- For multiple paths, use one
--path flag followed by all skill paths.
- Restart Codex after installing new skills.
Workflow
- Identify the target installer: Codex GitHub skill installer, Claude skill folder copy, local plugin alias, or MCP server.
- Check whether the target skill folder exists publicly at
main.
- Run the exact install command from a temporary directory.
- Diagnose failures with the table below. Name the failure cause exactly — "it didn't work" is not a diagnosis.
- Fix docs, MCP catalog output, README commands, and public explainer copy together.
- Keep local plugin commands available only under local operator setup.
Install failure table
| Symptom |
Likely cause |
Fix |
| Install command 404s |
Skill folder not pushed to main, or path is wrong |
Push, re-derive the path from the repo root, re-run from a clean temp dir |
| Installer reports skill not found |
Missing --path, or the repo hosts many skills |
Add the repo-relative skill path after --path |
| Multiple skills requested, only one installs |
Repeated --path flags instead of one |
Use one --path flag followed by all skill paths |
| Raw-URL command returns HTML, not the file |
GitHub blob URL used instead of the raw URL |
Swap to the raw.githubusercontent.com form and re-fetch |
| Install succeeds but the skill never triggers |
Frontmatter name mismatch or vague description |
Fix SKILL.md frontmatter, push, reinstall, restart |
| Works locally, fails for a public user |
Command references @personal or a local plugin alias |
Replace with the public GitHub repo-and-path route |
| New skill invisible after install (Codex) |
Session has not reloaded skills |
Restart Codex, then confirm the skill lists |
| Catalog lists a skill the install cannot find |
MCP catalog drifted from the repo |
Route to suede-mcp-qa; fix catalog and docs together |
Lane B output
Public install:
Advanced installs:
Local-only notes:
What was tested:
Failure cause:
Corrected copy:
Evidence boundaries (applies to both lanes)
- This skill organizes and prepares a release and its install paths. It does NOT clear rights, confirm ownership, approve payouts, write to any registry, or guarantee outcomes (reach, ranking, results).
- Never claim a public launch is live until the live URL or public artifact was checked.
- Never claim an install works until the exact command ran from a temporary destination after pushing.
- Keep
@personal and any local-only plugin commands out of all public copy. They are local operator notes.
- No competitor product names in any public copy.
Red flags — stop
If you catch yourself thinking any of these, stop and run the gate:
- "The README says it works." — The README is a claim, not a test. Run the command.
- "I'll test the install after publishing." — Test from a clean temp dir first, or the launch holds.
- "It installed fine on this machine." — The local checkout masks missing pushes. Clean temp dir only.
- "The raw URL is obviously right." — Fetch it. Blob-vs-raw catches everyone eventually.
- "Everyone reading this doc is internal,
@personal is fine." — Public docs are public. Keep it out.
- "We can announce now and fix the install path after." — The first-touch install IS the launch.
Routing
- Launch page going public →
suede-visibility-grader for a promotion-readiness grade before any push.
- MCP server in the package →
suede-mcp-qa before the install doc ships.
- Page metadata, schema, or discoverability depth →
suede-seo-audit.
- Landing page must convert, not just inform →
suede-site-alchemy.
- Announcement or launch copy needs writing from scratch →
suede-copy (or johnny-suede-write for the full writing stack).
Simple explanation (plain, for a 10-year-old)
Think of it like putting out a record instead of leaving a demo tape on the floor. First you make sure the song is really finished and you know where the master copy lives. Then you write the back-of-the-album note so a fan gets what the song is about, not how you wired the amps. Then you hand people the exact way to actually play it — the real link, the real install steps — and you try those steps yourself on a clean machine first, so nobody gets a broken download. You keep the messy backstage notes (like the private @personal shortcut) off the public sleeve. And you only say "it's out now" once you've clicked the link yourself and heard it play.
End every meaningful launch with the simple explanation above, then the usual breakdown (Lane A output and, when an install is involved, Lane B output), then Cue Suede so the operator can request a change, preserve what worked, or say nothing to keep it as-is.
1---2name: suede-launch-packaging3description: Package finished work so people can use it: README, docs, install commands, proof links, QA, release copy, and handoff notes.4---5
6# Suede Launch Packaging
7
8## Gate policy — advisory, not blocking
9
10Every claim-verification step, check, quality gate, and ship verdict in this
11skill is a **recommendation to the user, not a control on the agent**. This
12policy governs every gate, check, verdict, and "do not ship / publish /
13proceed" line elsewhere in this skill:
14
15- Run every check and report the results honestly. Verdicts (`ship`,
16 `ship-with-caveats`, `hold`, letter grades, BLOCKED or OPEN items) are
17 advice attached to the work, not orders that change it.
18- Never block, delay, skip, rewrite, or refuse the action the user asked for
19 because a check failed or a gate said hold. Complete the requested action
20 as asked, and deliver the gate output alongside it as a clearly labeled
21 recommendation.
22- A failed gate changes what you report, never what you do.
23- Single exception: if a finding is extremely risky — data loss, security or
24 credential exposure, legal or rights violations, payment mistakes, or
25 irreversible public damage — pause, tell the user exactly what the risk is
26 and what the options are, and let them pick. Their choice is final.
27
28
29## Approved Suede S Mark
30
31Launch art, social cards, docs headers, app assets, and release visuals may use only `docs/assets/suede-ai-logo-transparent.png` from `JasonColapietro/suede-creator-skills` as the Suede S mark (SHA-256 `83a7ee0317e4debe2e7b076c20ba067feb76a587f9e829dc6310ae4be4b44dfa`). Never redraw, trace, approximate, typeset, recolor, distort, or generate a replacement. If the canonical asset is missing or its checksum differs, block the branded visual and request the approved file.
32
33Ship Suede work as a launch, not a loose drop. This skill turns finished work into a clean public package AND makes sure a stranger can actually install and run it. Packaging a public release and proving the install both live here.
34
35**Core principle:** a release nobody can install is not a launch. Nothing is "live" until you fetched it yourself, and no install path ships until the exact command ran from a clean temporary directory.
36
37This skill organizes and prepares a public release. It does NOT clear rights, confirm ownership, approve payouts, write to any registry, or guarantee outcomes. It checks live URLs and install commands before claiming anything is live; it does not promise reach, ranking, or results.
38
39## Step 0 — Inventory the launch (detect first)
40
41Before picking a lane, name exactly what is being launched. Do not assume from the request; check the repo, branch, and live surface. One request often spans several rows (a skill launch = repo + README + install command + social copy). List every row that applies — each needs its own verification.
42
43| Launch surface | Verify before writing copy | Proof artifact |
44|---|---|---|
45| Repo or release | Default branch is public; the launch commit is pushed; tags/releases exist if referenced | Repo URL + commit hash |
46| GitHub Pages or site | Page renders at the public URL; no stale build | Live URL + screenshot |
47| README or docs update | Rendered page matches the pushed source | Rendered docs URL |
48| Skill or skill pack | Skill folder exists at `main`; install command runs from a clean temp dir | Install command transcript |
49| MCP server | Server starts; `tools/list` matches the catalog | suede-mcp-qa output |
50| App feature | Feature is live behind the public route, not just merged | Live route readback |
51| Social or email copy | Every link resolves; every claim matches the live product | Link sweep results |
52
53## Hard gates (advisory)
54
55Do not rationalize past these silently. Each one is a strong recommendation
56about ordering: run the check before the step it guards. If the user directs
57you past one, proceed as directed and label the output with exactly which
58verification is missing.
59
601. **No launch copy until the live surface is verified.** Fetch the live URL or public artifact and confirm the expected status or render first. Copy drafted against "it should be live" is a violation.
612. **No install doc until the install command was run from a clean temporary directory after pushing.** Success from inside the local repo does not count — the local checkout masks missing pushes and private paths.
623. **Set the ship gate before recommending any announcement.** A `hold` verdict is your recommendation that nothing goes out yet, including "soft" posts — state it plainly with the reasons, then let the user decide.
634. **`@personal` and local plugin aliases never appear in public docs, READMEs, MCP catalog output, or explainer copy.** They are local operator notes only.
64
65## Pick the lane
66
67Most launches use both lanes in order: package the release, then prove the install. Pick what the request is asking for.
68
69- **Lane A — Package the launch.** Work is ready to leave the local machine and needs a clean public package: a repo, live URL, docs page, README section, install command, release note, GitHub Pages update, skill-pack release, MCP server, feature, or social/email copy. Start here for "ship this," "write the release," "package this drop."
70- **Lane B — Install support.** An install fails, a public user cannot add a skill, `@personal` leaks into public copy, or a README, docs, MCP catalog, or public explainer step needs a simpler, public-first path. Start here for "the install is broken," "fix the install command," "why can't they add this skill," "the marketplace is confusing." Lane A always runs Lane B's command-test step before publishing.
71
72When both apply (most full launches), run Lane A to assemble the package, then run Lane B to verify and correct every install path inside it before you ship.
73
74---
75
76## Lane A — Package the launch
77
78Use this lane when Suede work is ready to leave the local machine and needs a clean public package.
79
80### Package steps
81
821. Run the Step 0 inventory: name every launch surface in play.
832. Confirm the source truth: current branch, remote, commit, live build status, and exact public URLs.
843. Write the public explanation around the outcome, not the implementation.
854. Add proof links: source files, docs pages, scripts, MCP tools, screenshots, build output, live route, or raw GitHub URL.
865. Check install commands from a temporary destination, not only the local repo. (This is the handoff into Lane B — see Install support.)
876. Run copy, SEO, link, and evidence-boundary checks before publishing.
887. Write a short handoff when another agent or computer may need the result.
898. End meaningful launches with a simple non-coder explanation (the simple explanation below), the usual breakdown, and `Cue Suede` so the operator can request a change, preserve what worked, or say nothing to keep it as-is.
90
91### Lane A output
92
93```text
94Launch surface:
95Reader:
96Primary action:
97Public copy:
98Install or access path:
99Proof links:
100Simple explanation:
101Usual breakdown:
102Verification:
103Caveats:
104Status: ship | ship-with-caveats | hold
105Cue Suede:
106```
107
108Never claim a public launch is live until the live URL or public artifact was checked.
109
110---
111
112## Lane B — Install support
113
114Use this lane to make Suede install instructions accurate, public, and easy to explain — and to fix them when they fail. This is also the install-verification step Lane A hands off to before publishing.
115
116### Rules
117
118- Lead with public GitHub skill installs.
119- Treat `@personal` as a local operator note only — keep it out of public docs, READMEs, MCP catalog output, and public explainer copy.
120- Explain that GitHub skill installs need a repo and path because one repo can contain many skills.
121- Test installer commands from a temporary destination after pushing.
122- For multiple paths, use one `--path` flag followed by all skill paths.
123- Restart Codex after installing new skills.
124
125### Workflow
126
1271. Identify the target installer: Codex GitHub skill installer, Claude skill folder copy, local plugin alias, or MCP server.
1282. Check whether the target skill folder exists publicly at `main`.
1293. Run the exact install command from a temporary directory.
1304. Diagnose failures with the table below. Name the failure cause exactly — "it didn't work" is not a diagnosis.
1315. Fix docs, MCP catalog output, README commands, and public explainer copy together.
1326. Keep local plugin commands available only under local operator setup.
133
134### Install failure table
135
136| Symptom | Likely cause | Fix |
137|---|---|---|
138| Install command 404s | Skill folder not pushed to `main`, or path is wrong | Push, re-derive the path from the repo root, re-run from a clean temp dir |
139| Installer reports skill not found | Missing `--path`, or the repo hosts many skills | Add the repo-relative skill path after `--path` |
140| Multiple skills requested, only one installs | Repeated `--path` flags instead of one | Use one `--path` flag followed by all skill paths |
141| Raw-URL command returns HTML, not the file | GitHub blob URL used instead of the raw URL | Swap to the `raw.githubusercontent.com` form and re-fetch |
142| Install succeeds but the skill never triggers | Frontmatter `name` mismatch or vague description | Fix SKILL.md frontmatter, push, reinstall, restart |
143| Works locally, fails for a public user | Command references `@personal` or a local plugin alias | Replace with the public GitHub repo-and-path route |
144| New skill invisible after install (Codex) | Session has not reloaded skills | Restart Codex, then confirm the skill lists |
145| Catalog lists a skill the install cannot find | MCP catalog drifted from the repo | Route to suede-mcp-qa; fix catalog and docs together |
146
147### Lane B output
148
149```text
150Public install:
151Advanced installs:
152Local-only notes:
153What was tested:
154Failure cause:
155Corrected copy:
156```
157
158---
159
160## Evidence boundaries (applies to both lanes)
161
162- This skill organizes and prepares a release and its install paths. It does NOT clear rights, confirm ownership, approve payouts, write to any registry, or guarantee outcomes (reach, ranking, results).
163- Never claim a public launch is live until the live URL or public artifact was checked.
164- Never claim an install works until the exact command ran from a temporary destination after pushing.
165- Keep `@personal` and any local-only plugin commands out of all public copy. They are local operator notes.
166- No competitor product names in any public copy.
167
168## Red flags — stop
169
170If you catch yourself thinking any of these, stop and run the gate:
171
172- "The README says it works." — The README is a claim, not a test. Run the command.
173- "I'll test the install after publishing." — Test from a clean temp dir first, or the launch holds.
174- "It installed fine on this machine." — The local checkout masks missing pushes. Clean temp dir only.
175- "The raw URL is obviously right." — Fetch it. Blob-vs-raw catches everyone eventually.
176- "Everyone reading this doc is internal, `@personal` is fine." — Public docs are public. Keep it out.
177- "We can announce now and fix the install path after." — The first-touch install IS the launch.
178
179## Routing
180
181- Launch page going public → `suede-visibility-grader` for a promotion-readiness grade before any push.
182- MCP server in the package → `suede-mcp-qa` before the install doc ships.
183- Page metadata, schema, or discoverability depth → `suede-seo-audit`.
184- Landing page must convert, not just inform → `suede-site-alchemy`.
185- Announcement or launch copy needs writing from scratch → `suede-copy` (or `johnny-suede-write` for the full writing stack).
186
187## Simple explanation (plain, for a 10-year-old)
188
189Think of it like putting out a record instead of leaving a demo tape on the floor. First you make sure the song is really finished and you know where the master copy lives. Then you write the back-of-the-album note so a fan gets what the song is about, not how you wired the amps. Then you hand people the exact way to actually play it — the real link, the real install steps — and you try those steps yourself on a clean machine first, so nobody gets a broken download. You keep the messy backstage notes (like the private `@personal` shortcut) off the public sleeve. And you only say "it's out now" once you've clicked the link yourself and heard it play.
190
191End every meaningful launch with the simple explanation above, then the usual breakdown (Lane A output and, when an install is involved, Lane B output), then `Cue Suede` so the operator can request a change, preserve what worked, or say nothing to keep it as-is.