Skillshare release skill

Prepare and review skillshare releases using the Release Please PR, verify the proposed version and changelog, inspect draft assets, and publish through the manual Publish Release workflow when explicitly authorized.

by runkids·MIT license·★ 2,712 Stars on the repo·GitHub ↗

Use now

Files of Skillshare release

runkids/main1 file shown
SKILL.md
Show the full text107 lines

Prepare or review a skillshare release. An optional version argument is an explicit requested version, not permission to commit, merge, tag, push, or publish.

Before acting, run python3 scripts/ai-context.py release testing. These topics are the source of truth for authorization, version policy, automation and verification.

Workflow

1. Identify the release

Inspect Git status, the latest published release and the open Release PR. Preserve unrelated work. The manifest at .github/release-please-manifest.json is the release version source; the development CLI still defaults to dev.

Pushes to main create or update a Release PR. If one is missing, report the workflow state and required repository permissions. Dispatch the Release Please workflow only when the user authorizes that external action.

For 0.x, fix and perf increment patch; feat and breaking changes increment minor. A breaking change needs migration notes. Moving to 1.0.0 requires an explicit version decision. For an override, use a Release-As: X.Y.Z commit footer or a reviewed release-as configuration value; remove a configuration override after it has been consumed. Do not edit the tracking manifest by itself to request a release.

Explicit version requests

When the user requests a version such as 0.23.3, prepare a Release-As: 0.23.3 footer on a normal development commit that will reach main before the Release PR is merged. For a batch with multiple commits, adding it once to the final commit is sufficient; the override chooses the version for the entire pending release, including the earlier changes. Intermediate versions do not need to be published.

fix: correct sync behavior

Release-As: 0.23.3

With merge or rebase-merge, preserve the footer in the development commit. With squash-merge, copy it into the final squash commit message on GitHub; do not assume the individual commit messages will be preserved. Keep the Conventional Commit subject and a blank line before the footer. If multiple pending commits request different versions, the newest override wins; inspect the pending range for conflicting requests before proceeding.

After the commit reaches main, verify that Release Please creates or updates the Release PR to the requested version. Review its manifest and synchronized metadata before merging. Adding a footer alone does not create the release tag or publish anything. Follow the existing authorization boundary when committing, pushing or merging.

2. Sync documentation first

Before touching the Release PR, run /skillshare-update-docs over the pending range <latest published tag>..origin/main. Check every user-visible feat, fix and breaking change against the command pages, guides, troubleshooting, built-in skill and README, in English and every translated locale, and note the commits that need no documentation change. Then build the whole website inside the devcontainer the way the Website Pages workflow does:

cd website && npm run build

For a minor or major release (any feat or breaking change in the range), also update the README:

  • Rewrite the Latest callout near the top of README.md for the new version, and the same callout in every translated README (README-ja.md, README-ko.md, README-zh-CN.md, README-zh-TW.md), each in its own language.

  • Add the release's contributors to the Contributors section of README.md (the translations link to it). A contributor is the author of an issue or PR the range references, or a commit author or Co-authored-by in the range, other than the maintainer. Skip anyone already listed, and verify each account exists before adding its avatar link:

    git log <tag>..origin/main --format='%B' | grep -oE '#[0-9]+' | sort -u
    gh api repos/runkids/skillshare/issues/<n> --jq '.user.login'
    git log <tag>..origin/main --format='%an%n%(trailers:key=Co-authored-by,valueonly)' | sort -u
    

Documentation fixes go to main, with the usual authorization to commit and push. Finish them before the next step. A push to main whose commits change the generated notes, such as a new feat or fix, regenerates the Release PR and discards edits made on its branch; docs commits leave it as it is (the Release Please log says the PR "remained the same").

3. Review the Release PR

Use /changelog to turn generated notes into user-facing prose and examples. Work on the Release PR branch, then synchronize and check its files inside the devcontainer:

python3 scripts/release/release.py sync
python3 scripts/release/release.py check --tag vX.Y.Z
make check
python3 -m unittest discover -s scripts/release -p '*_test.py'

Check the manifest, built-in skill metadata and both changelog copies. Bot-created or bot-updated PRs may require the maintainer to approve GitHub's native workflow prompt before CI runs. Never bypass that prompt.

Commit and push review edits, or merge the PR, only when explicitly authorized. Do not create a release tag locally: the automation tests the exact merged commit before creating the tag and draft.

4. Inspect the draft

After the Release PR merges, the Release Please workflow tests its merge SHA, creates a draft and tag, and explicitly calls Build Release Draft. The workflow builds all six CLI archives and the UI archive, generates the Homebrew formula, verifies checksums and checks the packaged CLI version.

Review the draft notes, migration guidance, tag and artifacts. A failed packaging job leaves an unpublished draft. Rerun the failed packaging job or, with authorization, dispatch Build Release Draft for that existing tag; do not create a second tag or change the version to hide a build failure.

5. Release notes and announcements

The published GitHub release body is specs/RELEASE_NOTES_<version>.md, not the CHANGELOG entry. Follow the most recent specs/RELEASE_NOTES_*.md (TL;DR, then one section per area) and verify every claim against source. The ignored specs/ files stay local unless the user explicitly asks to commit them. Do not force-add them by default.

After the draft is built, replace its body with the notes. The draft is unpublished, so this needs no publication authorization; Publish Release keeps the body:

gh release edit vX.Y.Z --notes-file specs/RELEASE_NOTES_X.Y.Z.md

Rebuilding the draft (Build Release Draft) regenerates the body from the CHANGELOG entry, so apply the notes again after any rebuild. If the draft listed external contributors, keep that section.

Draft announcements only when requested. Describe user-visible behavior, add examples and migration guidance, and avoid internal implementation details.

6. Publish only when authorized

Present the concrete draft and verification results. If publication is explicitly authorized, dispatch Publish Release with the exact vX.Y.Z tag. It verifies downloaded assets and the packaged CLI before publishing, then updates Homebrew and explicitly runs Docker Publish and Website Pages for the pinned tag commit. The website deploys only here, never on pushes to main.

Use this workflow rather than publishing directly from the GitHub draft page, so the complete distribution path runs. For a partial distribution failure, rerun the failed job with the same tag; never retag or publish an older version over the current one.

Report

State the reviewed version, Release PR and draft, test results, artifact checks, and which external actions were actually performed. Distinguish local preparation, an unpublished draft, a published release and completed distribution.

1---
2name: skillshare-release
3description: >-
4 Prepare and review skillshare releases using the Release Please PR, verify the
5 proposed version and changelog, inspect draft assets, and publish through the
6 manual Publish Release workflow when explicitly authorized. Use when the user
7 says "release", "prepare release", "cut a release", or asks to publish a new
8 version. For changelog-only tasks, use /changelog instead.
9argument-hint: "[version]"
10metadata:
11 targets: [claude, universal]
12---
13 
14Prepare or review a skillshare release. An optional version argument is an explicit requested version, not permission to commit, merge, tag, push, or publish.
15 
16Before acting, run `python3 scripts/ai-context.py release testing`. These topics are the source of truth for authorization, version policy, automation and verification.
17 
18## Workflow
19 
20### 1. Identify the release
21 
22Inspect Git status, the latest published release and the open Release PR. Preserve unrelated work. The manifest at `.github/release-please-manifest.json` is the release version source; the development CLI still defaults to `dev`.
23 
24Pushes to `main` create or update a Release PR. If one is missing, report the workflow state and required repository permissions. Dispatch the Release Please workflow only when the user authorizes that external action.
25 
26For `0.x`, `fix` and `perf` increment patch; `feat` and breaking changes increment minor. A breaking change needs migration notes. Moving to `1.0.0` requires an explicit version decision. For an override, use a `Release-As: X.Y.Z` commit footer or a reviewed `release-as` configuration value; remove a configuration override after it has been consumed. Do not edit the tracking manifest by itself to request a release.
27 
28#### Explicit version requests
29 
30When the user requests a version such as `0.23.3`, prepare a `Release-As: 0.23.3` footer on a normal development commit that will reach `main` before the Release PR is merged. For a batch with multiple commits, adding it once to the final commit is sufficient; the override chooses the version for the entire pending release, including the earlier changes. Intermediate versions do not need to be published.
31 
32```text
33fix: correct sync behavior
34 
35Release-As: 0.23.3
36```
37 
38With merge or rebase-merge, preserve the footer in the development commit. With squash-merge, copy it into the final squash commit message on GitHub; do not assume the individual commit messages will be preserved. Keep the Conventional Commit subject and a blank line before the footer. If multiple pending commits request different versions, the newest override wins; inspect the pending range for conflicting requests before proceeding.
39 
40After the commit reaches `main`, verify that Release Please creates or updates the Release PR to the requested version. Review its manifest and synchronized metadata before merging. Adding a footer alone does not create the release tag or publish anything. Follow the existing authorization boundary when committing, pushing or merging.
41 
42### 2. Sync documentation first
43 
44Before touching the Release PR, run `/skillshare-update-docs` over the pending range `<latest published tag>..origin/main`. Check every user-visible `feat`, `fix` and breaking change against the command pages, guides, troubleshooting, built-in skill and README, in English and every translated locale, and note the commits that need no documentation change. Then build the whole website inside the devcontainer the way the Website Pages workflow does:
45 
46```bash
47cd website && npm run build
48```
49 
50For a minor or major release (any `feat` or breaking change in the range), also update the README:
51 
52- Rewrite the `Latest` callout near the top of `README.md` for the new version, and the same callout in every translated README (`README-ja.md`, `README-ko.md`, `README-zh-CN.md`, `README-zh-TW.md`), each in its own language.
53- Add the release's contributors to the `Contributors` section of `README.md` (the translations link to it). A contributor is the author of an issue or PR the range references, or a commit author or `Co-authored-by` in the range, other than the maintainer. Skip anyone already listed, and verify each account exists before adding its avatar link:
54 
55 ```bash
56 git log <tag>..origin/main --format='%B' | grep -oE '#[0-9]+' | sort -u
57 gh api repos/runkids/skillshare/issues/<n> --jq '.user.login'
58 git log <tag>..origin/main --format='%an%n%(trailers:key=Co-authored-by,valueonly)' | sort -u
59 ```
60 
61Documentation fixes go to `main`, with the usual authorization to commit and push. Finish them before the next step. A push to `main` whose commits change the generated notes, such as a new `feat` or `fix`, regenerates the Release PR and discards edits made on its branch; `docs` commits leave it as it is (the Release Please log says the PR "remained the same").
62 
63### 3. Review the Release PR
64 
65Use `/changelog` to turn generated notes into user-facing prose and examples. Work on the Release PR branch, then synchronize and check its files inside the devcontainer:
66 
67```bash
68python3 scripts/release/release.py sync
69python3 scripts/release/release.py check --tag vX.Y.Z
70make check
71python3 -m unittest discover -s scripts/release -p '*_test.py'
72```
73 
74Check the manifest, built-in skill metadata and both changelog copies. Bot-created or bot-updated PRs may require the maintainer to approve GitHub's native workflow prompt before CI runs. Never bypass that prompt.
75 
76Commit and push review edits, or merge the PR, only when explicitly authorized. Do not create a release tag locally: the automation tests the exact merged commit before creating the tag and draft.
77 
78### 4. Inspect the draft
79 
80After the Release PR merges, the Release Please workflow tests its merge SHA, creates a draft and tag, and explicitly calls Build Release Draft. The workflow builds all six CLI archives and the UI archive, generates the Homebrew formula, verifies checksums and checks the packaged CLI version.
81 
82Review the draft notes, migration guidance, tag and artifacts. A failed packaging job leaves an unpublished draft. Rerun the failed packaging job or, with authorization, dispatch Build Release Draft for that existing tag; do not create a second tag or change the version to hide a build failure.
83 
84### 5. Release notes and announcements
85 
86The published GitHub release body is `specs/RELEASE_NOTES_<version>.md`, not the CHANGELOG entry. Follow the most recent `specs/RELEASE_NOTES_*.md` (TL;DR, then one section per area) and verify every claim against source. The ignored `specs/` files stay local unless the user explicitly asks to commit them. Do not force-add them by default.
87 
88After the draft is built, replace its body with the notes. The draft is unpublished, so this needs no publication authorization; Publish Release keeps the body:
89 
90```bash
91gh release edit vX.Y.Z --notes-file specs/RELEASE_NOTES_X.Y.Z.md
92```
93 
94Rebuilding the draft (Build Release Draft) regenerates the body from the CHANGELOG entry, so apply the notes again after any rebuild. If the draft listed external contributors, keep that section.
95 
96Draft announcements only when requested. Describe user-visible behavior, add examples and migration guidance, and avoid internal implementation details.
97 
98### 6. Publish only when authorized
99 
100Present the concrete draft and verification results. If publication is explicitly authorized, dispatch **Publish Release** with the exact `vX.Y.Z` tag. It verifies downloaded assets and the packaged CLI before publishing, then updates Homebrew and explicitly runs Docker Publish and Website Pages for the pinned tag commit. The website deploys only here, never on pushes to `main`.
101 
102Use this workflow rather than publishing directly from the GitHub draft page, so the complete distribution path runs. For a partial distribution failure, rerun the failed job with the same tag; never retag or publish an older version over the current one.
103 
104## Report
105 
106State the reviewed version, Release PR and draft, test results, artifact checks, and which external actions were actually performed. Distinguish local preparation, an unpublished draft, a published release and completed distribution.
107 

Discussion

Alternatives

CI/CD and AutomationAutomates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.Infrastructure & ops · MITVersion Bump & Release WorkflowAutomated semantic versioning and release workflow for Claude Code plugins. Handles version increments across package.json, marketplace.json, plugin.json manifests, build verification, git tagging, GitHub releases, and changelog generation. NPM publishing is the final human-required handoff because the maintainer raised npm security.Infrastructure & ops · Apache-2.0Orca CLIOperate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser through the `orca` CLI. Use when the user says "$orca-cli", "Orca worktree", "child worktree", "spawn codex/claude in a worktree", "read/wait/send Orca terminal", "handoff" / "handover" / "give this to another agent", "Orca browser", "orca artifacts", or "share skills". Prefer it over raw git worktree, ad hoc PTYs, or Computer Use when Orca state is involved. Use Computer Use only when a visible window needs GUI control that a CLI, filesystem, or API cannot do.Infrastructure & ops · MITOrca OrchestrationCoordinate supervised Orca workers: threaded messages, blocking ask/reply, task dispatch, worker_done/escalation waits, task DAGs, decision gates, coordinator loops, and decomposing work across agents. Use `orca-cli` for full ownership handoffs — "hand off", "handoff", "handover", "give this to another agent", "another worktree" — unless asked to supervise, monitor, or coordinate a DAG, and for terminal control, lightweight terminal prompts, shell commands, Orca worktree management, and reading or waiting on terminals.Infrastructure & ops · MIT