---
title: "quiche-draft-release by cloudflare · skilld"
canonical_url: "https://skilld.dev/gh/cloudflare/quiche"
meta:
  description: "quiche draft GitHub release automation from a release commit hash or existing tag. Use when creating draft releases for the quiche crate from a quiche/Cargo.toml version bump. From cloudflare/quiche."
  "og:description": "quiche draft GitHub release automation from a release commit hash or existing tag. Use when creating draft releases for the quiche crate from a quiche/Cargo.toml version bump. From cloudflare/quiche."
  "og:title": "quiche-draft-release by cloudflare"
  "twitter:description": "quiche draft GitHub release automation from a release commit hash or existing tag. Use when creating draft releases for the quiche crate from a quiche/Cargo.toml version bump. From cloudflare/quiche."
  "twitter:title": "quiche-draft-release by cloudflare"
---

`

[All skills](https://skilld.dev/skills)

[![cloudflare avatar](https://skilld.dev/_img/avatar?url=https%3A%2F%2Fgithub.com%2Fcloudflare.png%3Fsize%3D96)](https://skilld.dev/gh/cloudflare)

# **/quiche-draft-release**

[@4d23d85](https://github.com/cloudflare/quiche/commit/4d23d859166a2eab86286eb77a836111938abf68 "Your agent reads SKILL.md at commit 4d23d85")

by [cloudflare](https://skilld.dev/gh/cloudflare)· [cloudflare](https://skilld.dev/gh/cloudflare)/ [quiche](https://skilld.dev/gh/cloudflare/quiche)·13k stars

 1,162

quiche draft GitHub release automation from a release commit hash or existing tag. Use when creating draft releases for the quiche crate from a quiche/Cargo.toml version bump.

- 2 files
- 9.4 KB
- Updated 2 weeks ago
- [GitHub](https://github.com/cloudflare/quiche/blob/4d23d859166a2eab86286eb77a836111938abf68/.codex/skills/quiche-draft-release/SKILL.md "View SKILL.md on GitHub")

## SKILL.md

4.5 KB

**≈49** tokens always: the name and description. **≈1.1k** when used: this file.

## quiche Draft Release

Use this skill when the user asks to create a GitHub draft release for the `quiche` crate and provides, or should provide, either the commit hash that bumped `quiche/Cargo.toml` or an existing release tag pointing at that commit.

Do not require a pre-existing tag. quiche release tags are created after the release PR is merged, because GitHub does not support fast-forward PR merges. Use the release commit hash as the source of truth when the tag does not exist yet, and let `gh release create` target that commit. If the release tag already exists, the user may provide either the tag or the commit hash.

### Inputs

- Required: a release ref. This is either a commit hash for the commit that changed `quiche/Cargo.toml` to the released version, or an existing quiche release tag such as `0.29.1` that points at that commit.
- Optional: a release title emoji. If none is requested, choose one consistent with existing quiche releases.

If the release ref is missing or ambiguous, ask one short clarification question.

### Workflow

1. Run a dry run with the helper script:

   ```
   ./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh --dry-run <release-ref>
   ```


2. Use the dry-run output to identify the version, previous quiche release tag, compare range, and whether the tag already exists.
3. Prepare release notes for `quiche/` only, following `RELEASING.md`:
   - Do not use a raw commit list.
   - Include only important user-visible changes.
   - Clearly mark breaking changes and security fixes.
   - Explain what applications need to change for breaking changes.
   - Use versioned `docs.rs` links for new public APIs where useful.
   - Ignore unrelated workspace crates, release commits, formatting, clippy, test-only changes, and internal refactors unless user-visible.
4. Write the release notes to a temporary file, for example:

   ```
   /tmp/quiche-release-<version>.md
   ```


5. Before creating the release, unless the user has explicitly asked to proceed without confirmation, show the exact `gh release create` command and ask for confirmation.
6. Create the GitHub draft release with the helper script:

   ```
   ./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh \
     --title "<emoji> <version>" \
     --notes-file /tmp/quiche-release-<version>.md \
     <release-ref>
   ```


7. Verify the draft after creation:

   ```
   gh release view <version> --repo cloudflare/quiche \
     --json tagName,name,isDraft,isPrerelease,url
   ```



GitHub draft release URLs often use `untagged-*`. Trust `tagName` from `gh release view` to verify the draft is associated with the expected version.

### Helper Script Behavior

The helper script:

- Resolves the supplied release ref to a commit. The ref may be a commit hash or an existing quiche release tag.
- Reads the release version from `quiche/Cargo.toml` at the resolved commit.
- Verifies the resolved commit changed the quiche crate version relative to its first parent.
- Infers the previous quiche release tag from semver-like quiche tags merged into the release commit.
- Refuses to create a release if a GitHub release for that version already exists.
- Uses the existing release tag if it exists and points at the resolved commit.
- Adds `--target <commit>` when the tag does not exist yet.
- Creates the GitHub release as a draft only.

### Examples

Dry run:

```
./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh \
  --dry-run f0c7193c3
```

Dry run with an existing tag:

```
./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh \
  --dry-run 0.29.1
```

Create a draft release:

```
./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh \
  --title "🩹 0.29.1" \
  --notes-file /tmp/quiche-release-0.29.1.md \
  f0c7193c3
```

Create a draft release from an existing tag:

```
./.codex/skills/quiche-draft-release/scripts/create-draft-release.sh \
  --title "🩹 0.29.1" \
  --notes-file /tmp/quiche-release-0.29.1.md \
  0.29.1
```

### Do Not

- Do not create or move git tags manually as part of this skill.
- Do not publish the release; keep it as a draft.
- Do not create releases for non- `quiche` workspace crates with this skill.
- Do not overwrite or edit an existing GitHub release unless the user explicitly asks for that.

Source: [SKILL.md on GitHub](https://github.com/cloudflare/quiche/blob/4d23d859166a2eab86286eb77a836111938abf68/.codex/skills/quiche-draft-release/SKILL.md)

## Third-party checks

No third-party reports yet.

## Provenance

[Signed by skilld at 4d23d85.](https://github.com/cloudflare/quiche/commit/4d23d859166a2eab86286eb77a836111938abf68 "4d23d859166a2eab86286eb77a836111938abf68") This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 hours ago.

Activeupdated 2 weeks ago

## README badge

![README badge for cloudflare/quiche](https://skilld.dev/b/cloudflare/quiche?theme=light&label=0)

## Related skills

-
-
-
-
-
-