VérificationSûr100100/100
Canary (Storybook)
Finds or publishes a pkg.pr.new canary release for a Storybook branch. Use when the user wants the canary package specifier for a branch or needs to trigger the canary workflow manually.
ou envoie-le directement à ton agent.
Installer dans ton projet
$ curl -fsSL https://arboristhree.xyz/cli/install-skill.mjs -o /tmp/arboris-install-skill.mjs && node /tmp/arboris-install-skill.mjs canary__storybookjs-storybook__agents-skills-3c4829ea63aaStorybook
storybookjs/storybook
Contenu à copier
---
name: canary
description: Finds or publishes a pkg.pr.new canary release for a Storybook branch. Use when the user wants the canary package specifier for a branch or needs to trigger the canary workflow manually.
allowed-tools: Bash
metadata:
origin: Storybook
internal: true
---
# Find Or Publish Canary Release
Use this skill to get a branch-specific canary build from `pkg.pr.new`.
Canary publishes are driven by the `publish-canary.yml` workflow.
Automatic canary publishes:
- Every push to `next`
- In-repo PRs labeled `ci:canary` (a human must apply that label). While it remains, every push to the PR republishes. The label does nothing on fork PRs.
## Version string
The canary version string is constructed like this:
```text
storybook@https://pkg.pr.new/storybook@<SHA>
```
Replace `<SHA>` with the short commit SHA (first 7 characters). Compact URLs (`https://pkg.pr.new/storybook@<SHA>`) resolve to the same tarball as the owner/repo form. The pkg.pr.new dashboard is always `https://pkg.pr.new/~/storybookjs/storybook`.
## Check whether a canary already exists
```bash
SHA=$(git rev-parse --short=7 HEAD)
curl -I "https://pkg.pr.new/storybook@$SHA"
```
An HTTP `200` status code means the canary already exists for that commit.
## Decision flow
Use this skill with the following if-then behavior.
### A. If the branch already has a PR with the `ci:canary` label
Do not trigger anything manually. Read the canary heading and install commands from the PR body. That section is the current run status and the most recent release.
```bash
BRANCH=$(git branch --show-current)
gh pr list \
--repo storybookjs/storybook \
--head "$BRANCH" \
--state open \
--json number,title,labels,url \
--jq '.[] | select(any(.labels[]?; .name == "ci:canary"))'
```
```bash
gh pr view <NUMBER> --repo storybookjs/storybook --json body --jq .body
```
Use the heading and the `CANARY_RELEASE_SECTION` commands as-is. A follow-up workflow (`publish-canary-pr-body.yml`) writes those sections after publish finishes, including after a maintainer manual run.
Fork PRs never use path A. Use path C.
- **Released** — use the install commands from the body
- **Failed** — the heading links to pkg.pr.new; the failure comment links to the workflow run
- **Not run** — publish is still in progress, unlabeled, or the follow-up has not run yet
### B. If the in-repo branch does not have a PR with the `ci:canary` label
Trigger the canary workflow manually on the branch and watch it finish. It usually takes 5-10 minutes. You can also use the GitHub Actions UI: open `publish-canary.yml`, click "Run workflow", and select the branch. Optional inputs `pr`, `branch`, and `sha` must agree when more than one is set.
```bash
BRANCH=$(git branch --show-current)
gh workflow run --repo storybookjs/storybook publish-canary.yml --ref "$BRANCH"
```
Find the new workflow run and watch it:
```bash
BRANCH=$(git branch --show-current)
RUN_ID=$(gh run list \
--repo storybookjs/storybook \
--workflow publish-canary.yml \
--branch "$BRANCH" \
--event workflow_dispatch \
--json databaseId \
--jq '.[0].databaseId')
gh run watch "$RUN_ID" --repo storybookjs/storybook
```
When it finishes successfully, read the canary heading from the PR body if a PR was updated. Otherwise construct the version string from the published SHA (the run's `headSha` is the workflow-source branch, which may differ when you passed `pr` or `sha`):
```bash
RUN_SHA=$(gh run view "$RUN_ID" --repo storybookjs/storybook --json jobs --jq '[.jobs[].steps[]?.name | select(startswith("canary-ref "))][0]' | sed -n 's/.*sha=\([0-9a-fA-F]\{7,40\}\).*/\1/p')
SHORT_SHA="${RUN_SHA:0:7}"
echo "storybook@https://pkg.pr.new/storybook@$SHORT_SHA"
```
### C. If the change is a fork PR
Do not add `ci:canary`. Dispatch the workflow from this repository with the PR number. The fork author does not need to do anything.
```bash
gh workflow run --repo storybookjs/storybook publish-canary.yml --ref next -f pr=<PR_NUMBER>
```
If you also pass `branch` or `sha`, they must be that PR's current head. A later push on the fork does not republish until you run the workflow again.
Optionally confirm the package is live:
```bash
curl -I "https://pkg.pr.new/storybook@$SHORT_SHA"
```
## Use the canary
For a new project:
```bash
npx --yes --allow-remote=all https://pkg.pr.new/create-storybook@<SHA>
```
For an existing project:
```bash
npx --yes --allow-remote=all https://pkg.pr.new/storybook@<SHA> upgrade
```
## Requirements
- You need `gh` CLI authenticated for `storybookjs/storybook`
- You need permission to run workflows in the repository for manual dispatch
- The canary workflow is `publish-canary.yml`
## Monitor progress
Workflow page:
- https://github.com/storybookjs/storybook/actions/workflows/publish-canary.yml
CLI:
```bash
gh run list --repo storybookjs/storybook --workflow publish-canary.yml
```Colle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait Canary (Storybook)
Every push to `next`
In-repo PRs labeled `ci:canary` (a human must apply that label). While it remains, every push to the PR republishes. The label does nothing on fork PRs.
**Released** — use the install commands from the body
**Failed** — the heading links to pkg.pr.new; the failure comment links to the workflow run
Comment utiliser Canary (Storybook)
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour Canary (Storybook)
Dis simplement à ton agent quelque chose comme :
Applique le skill canary__storybookjs-storybook__agents-skills-3c4829ea63aa à cette tâche
Utilise canary__storybookjs-storybook__agents-skills-3c4829ea63aa pour améliorer cette implémentation
Passe en revue ce sujet avec canary__storybookjs-storybook__agents-skills-3c4829ea63aa
Skills liés à Canary (Storybook)
agent-eval
Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.Agent Evaluation Designer (Microsoft)
Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent "done."agent-self-evaluation
Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.