GitHub Actions Docs
devantler-tech/ksail
A skill your agent uses when users ask how to write, explain, customize, migrate, secure, or troubleshoot GitHub Actions workflows, workflow syntax, triggers, matrices, runners, reusable workflows…
Release the ReactiveProperty NuGet package set from this repository.
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install runceel/ReactiveProperty releasing-reactiveproperty --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .claude/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .claude/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactivepropertyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install runceel/ReactiveProperty releasing-reactiveproperty --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .agents/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .agents/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install runceel/ReactiveProperty releasing-reactiveproperty --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .cursor/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .cursor/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/runceel/ReactiveProperty.git --path .agents/skills/releasing-reactiveproperty--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install runceel/ReactiveProperty releasing-reactiveproperty --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .gemini/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .gemini/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install runceel/ReactiveProperty releasing-reactivepropertyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .github/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .github/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install runceel/ReactiveProperty releasing-reactiveproperty --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runceel/ReactiveProperty.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/releasing-reactiveproperty .opencode/skills/releasing-reactiveproperty && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "releasing-reactiveproperty" agent skill from https://github.com/runceel/ReactiveProperty/tree/main/.agents/skills/releasing-reactiveproperty into .opencode/skills/releasing-reactiveproperty/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "releasing-reactiveproperty", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
releasing-reactivepropertyRelease the ReactiveProperty NuGet package set from this repository.
Releasing Reactiveproperty is an agent skill from runceel/ReactiveProperty. Release the ReactiveProperty NuGet package set from this repository. Use this skill whenever the user asks to release, publish, ship, pre-release/prerelease, stable release, tag v, push NuGet packages, or mentions "リリース", "pre リリース", "正式リリース", "NuGet 公開", or "パッケージ公開" for ReactiveProperty, even if they do not use the skill name. Handles tag-driven releases, mode/version confirmation, GitHub Actions monitoring, NuGet/GitHub Release verification, and failure guardrails. Do not use for setting up NuGet OIDC/trusted…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering OAuth and OpenID Connect and CI/CD. It works with GitHub Actions and GitHub. The repository describes itself as: ReactiveProperty provides MVVM and asynchronous support features under Reactive Extensions. Target frameworks are .NET 6+, .NET Framework 4.7.2 and .NET Standard 2.0. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e7e6474. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghdotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.nuget.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Releasing Reactiveproperty loads about 2.7k tokens when it runs. Until then it costs about 149 tokens; SKILL.md has 1,076 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from runceel/ReactiveProperty at commit e7e6474, republished under its MIT licence (© runceel). 1,076 words, ~2,727 tokens.
.claude/skills/releasing-reactiveproperty/SKILL.md (or your agent's skills folder).Run the tag-driven release procedure for the ReactiveProperty NuGet package set.
runceel/ReactiveProperty.gh auth status)..github/workflows/build-and-publish.yml uses NuGet/login@v1 and secrets.NUGET_USER; if this setup is broken or missing, use the nuget-trusted-publishing skill instead.10.0.x) when running the full solution locally.ask_user with choices for pre-release and stable release before doing any release work.<Version> property. If the maintainer has not explicitly supplied the target version, ask for it and stop.Source/Directory.Build.props or create a version bump PR unless the maintainer explicitly asks for repository version record-keeping..github/workflows/build-and-publish.yml rewrites Source/Directory.Build.props from the pushed v* tag inside the runner before build/test/package.v{version} already exists locally or remotely, stop and ask the maintainer.dotnet nuget push or a long-lived API key.Normalize a requested version by removing one leading v for validation, then add v back for the tag.
| Mode | Required version shape | Example tag | Notes |
|---|---|---|---|
| Pre-release | SemVer prerelease containing -pre | v9.4.0-pre.1 | The workflow marks GitHub Releases as prerelease only when the version contains -pre. Do not use -alpha, -beta, or -rc unless the maintainer accepts that the current workflow will not mark it as prerelease. |
| Stable release | Plain SemVer | v9.4.0 | Must not contain a prerelease suffix. |
If the user supplies a version that does not match the selected mode, stop and ask for a corrected version.
The normal ReactiveProperty.slnx release publishes these package IDs:
| Package ID | Project |
|---|---|
ReactiveProperty.Core | Source/ReactiveProperty.Core/ReactiveProperty.Core.csproj |
ReactiveProperty | Source/ReactiveProperty.NETStandard/ReactiveProperty.NETStandard.csproj |
ReactiveProperty.Blazor | Source/ReactiveProperty.Platform.Blazor/ReactiveProperty.Platform.Blazor.csproj |
ReactiveProperty.WPF | Source/ReactiveProperty.Platform.WPF/ReactiveProperty.Platform.WPF.csproj |
ReactiveProperty.R3 | Source/ReactiveProperty.R3/ReactiveProperty.R3.csproj |
ReactiveProperty.R3.WPF | Source/ReactiveProperty.R3.WPF/ReactiveProperty.R3.WPF.csproj |
ReactiveProperty.UWP is legacy and is not part of the normal ReactiveProperty.slnx release.
ask_user before proceeding.ask_user and stop; do not propose or infer a version from tags, releases, package metadata, or Source/Directory.Build.props.v{version}.Fetch main and tags, then inspect the intended release commit:
git fetch origin main --tags --prune
git rev-parse origin/main
git log --oneline -n 5 origin/main
git tag --list v{version}Stop if the tag already exists. Confirm that origin/main is the intended release commit; do not tag a feature/worktree branch by accident.
Mirror the release workflow as closely as possible, passing the intended version without editing files:
dotnet restore ReactiveProperty.slnx
dotnet build ReactiveProperty.slnx -c Release --no-restore /p:Version={version} /p:ContinuousIntegrationBuild=True /p:EmbedUntrackedSources=True
dotnet test ReactiveProperty.slnx --no-restore --verbosity normalIf validation fails, stop and fix the failure before tagging. Only skip local validation when the maintainer explicitly asks to rely on GitHub Actions.
Do this only when the maintainer explicitly asks to record the release version in main before release.
Source/Directory.Build.props <Version> to the target version.origin/main again and tag the merged commit.This PR is optional for the current workflow because the package version is produced from the tag during the release run.
Before pushing, present a compact confirmation with:
origin/main commit SHA;After explicit confirmation, create an annotated tag on origin/main and push it:
git tag -a v{version} origin/main -m "Release {version}"
git push origin v{version}Find the tag-triggered run and watch it to completion:
gh run list --workflow build-and-publish.yml --limit 10 --json databaseId,headBranch,headSha,status,conclusion,event,createdAt
gh run watch {run-id} --exit-statusIf the run fails, inspect failed logs:
gh run view {run-id} --log-failedDo not delete/recreate the tag. If the failure is transient and no version correction is needed, rerun the same workflow instead.
Verify the GitHub Release:
gh release view v{version} --json tagName,isPrerelease,assets,url,publishedAtFor pre-releases, isPrerelease must be true. If it is false, check whether the version contains -pre; the current workflow only uses that substring to set prerelease status.
Verify NuGet indexing for every package ID. NuGet indexing can lag, so retry for a short period before reporting a delay:
$version = "{version}".ToLowerInvariant()
$packages = @(
"ReactiveProperty",
"ReactiveProperty.Core",
"ReactiveProperty.Blazor",
"ReactiveProperty.WPF",
"ReactiveProperty.R3",
"ReactiveProperty.R3.WPF"
)
foreach ($package in $packages) {
$id = $package.ToLowerInvariant()
$index = Invoke-RestMethod "https://api.nuget.org/v3-flatcontainer/$id/index.json"
[PSCustomObject]@{
Package = $package
Published = $index.versions -contains $version
}
}| Problem | Likely cause | Recovery |
|---|---|---|
| Release mode is unclear | User asked for "release" without pre/stable detail | Ask pre-release vs stable release with ask_user before proceeding. |
| Version does not match mode | Pre-release lacks -pre, or stable has a suffix | Stop and ask for a corrected version. |
v{version} already exists | Release was already attempted or completed | Stop. Inspect existing tag/release; never force-push or recreate it. |
| Local validation fails | Build/test regression or environment issue | Fix the failure or ask whether to rely on Actions; do not tag by default. |
NuGet/login@v1 fails | Trusted publishing policy, NUGET_USER, or OIDC permission issue | Use nuget-trusted-publishing; do not use a local API key fallback. |
| Workflow fails after some packages publish | Partial publish or transient failure | Do not retag. Use the same workflow run/rerun; --skip-duplicate handles already-published packages. |
| NuGet package is not visible immediately | NuGet indexing delay | Recheck flat-container indexes before declaring failure. |
| GitHub Release is not marked prerelease | Version did not contain -pre or workflow changed | Report the mismatch; do not edit release metadata unless the maintainer asks. |
Before tagging, show:
Release mode: pre-release|stable
Version: {version}
Tag: v{version}
Newest tag: {tag}
Newest GitHub Release: {tag} ({publishedAt})
Newest stable GitHub Release: {tag}
Target commit: {short-sha} {subject}
Packages: ReactiveProperty, ReactiveProperty.Core, ReactiveProperty.Blazor, ReactiveProperty.WPF, ReactiveProperty.R3, ReactiveProperty.R3.WPF
Validation: passed|skipped by maintainerAfter completion, show:
Release v{version}: succeeded|failed
GitHub Actions: {run-url}
GitHub Release: {release-url and prerelease status}
NuGet: all package IDs visible|pending indexing|failed package list| Reference | Purpose |
|---|---|
.github/workflows/build-and-publish.yml | Source of truth for tag trigger, package build, NuGet publish, and GitHub Release creation. |
Source/Directory.Build.props | Repository version property that the workflow rewrites from the tag during release. |
ReactiveProperty.slnx | Solution restored, built, tested, and packaged by the release workflow. |
.agents/skills/nuget-trusted-publishing/SKILL.md | Use when OIDC/trusted publishing setup needs to be created or repaired. |
After a release attempt, note any step that differed from this skill. If the repository workflow changed, update this skill in a follow-up PR so the next release runbook stays accurate.
© runceel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/releasing-reactiveproperty of runceel/ReactiveProperty.
Open the folder on GitHubat commit e7e6474
Releasing Reactiveproperty next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Releasing Reactiveproperty this skillrunceel/ReactiveProperty | 944 | — | ~2.7k | Automated safety check: Pass | MIT | |
| GitHub Actions Docsdevantler-tech/ksail | 165 | 2 repos | ~1.3k | Automated safety check: Pass | Custom licence | |
| GitHub Actions Genlaolaoshiren/claude-code-skills-zh | 880 | — | ~1.1k | Automated safety check: Notes | MIT | |
| AWS GitHub Oidc Scoped Rolemizchi/skills | 360 | — | ~1.6k | Automated safety check: Pass | None | |
| Gh Actions Validatorjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~713 | Automated safety check: Pass | MIT | |
| GitHub Actions Hardeninggithub/awesome-copilot | 40k | 1 repos | ~2.4k | Automated safety check: Pass | MIT |
devantler-tech/ksail
A skill your agent uses when users ask how to write, explain, customize, migrate, secure, or troubleshoot GitHub Actions workflows, workflow syntax, triggers, matrices, runners, reusable workflows…
laolaoshiren/claude-code-skills-zh
分析真实项目并生成或修订安全、可验证的 GitHub Actions workflow;当用户要求创建 CI、测试矩阵、构建、Release、部署、缓存、Secrets、OIDC、PR 自动化或排查 workflow 配置时使用
mizchi/skills
OpenTofu/Terraform pattern for GitHub Actions OIDC trust with AWS IAM.
jeremylongshore/tons-of-skills-marketplace
Validate use when validating GitHub Actions workflows for Google Cloud and Vertex AI deployments.
github/awesome-copilot
Security hardening reviewer for GitHub Actions workflow files (.github/workflows/.yml).
rodri-oliveira-dev/Dapper-FluentMap
Review, maintain, or set up NuGet trusted publishing (OIDC) for GitHub Actions.
runceel/ReactiveProperty
Catalog of MSBuild anti-patterns with detection rules and fix recipes.
runceel/ReactiveProperty
Analyze MSBuild binary logs to diagnose build failures by replaying binlogs to searchable text logs.
runceel/ReactiveProperty
Automated, project-wide code coverage and CRAP (Change Risk Anti-Patterns) score analysis for .NET projects with existing unit tests.
runceel/ReactiveProperty
ReactiveProperty repository development policy. An agent skill from runceel/ReactiveProperty.
runceel/ReactiveProperty
Reference for the .NET 10 / C 14 features that are relevant to the ReactiveProperty repository.
runceel/ReactiveProperty
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP).
Works with
Categories
Release the ReactiveProperty NuGet package set from this repository. Releasing Reactiveproperty is an agent skill from runceel/ReactiveProperty. Release the ReactiveProperty NuGet package set from this repository.
Releasing Reactiveproperty fits situations like: the user asks to release; pre-release/prerelease; push NuGet packages; パッケージ公開 for ReactiveProperty.
Run `npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a claude-code`. Or copy the skill folder (.agents/skills/releasing-reactiveproperty in runceel/ReactiveProperty) into .claude/skills/releasing-reactiveproperty in your project. Claude Code loads it when a task matches its description.
Run `npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a codex`. Or copy the skill folder (.agents/skills/releasing-reactiveproperty in runceel/ReactiveProperty) into .agents/skills/releasing-reactiveproperty in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add runceel/ReactiveProperty --skill releasing-reactiveproperty -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/releasing-reactiveproperty, .gemini/skills/releasing-reactiveproperty, .github/skills/releasing-reactiveproperty and .opencode/skills/releasing-reactiveproperty in your project.
Going by SKILL.md and its folder, Releasing Reactiveproperty needs the command-line tools its instructions call (git, gh and dotnet).
SKILL.md names 1 domain. In commands or code: api.nuget.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Releasing Reactiveproperty is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Releasing Reactiveproperty: GitHub Actions Docs (devantler-tech/ksail, 165 stars), GitHub Actions Gen (laolaoshiren/claude-code-skills-zh, 880 stars), AWS GitHub Oidc Scoped Role (mizchi/skills, 360 stars) and Gh Actions Validator (jeremylongshore/tons-of-skills-marketplace, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
runceel (a GitHub user) maintains it in runceel/ReactiveProperty, which has 944 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on August 31, 2026.
Source: runceel/ReactiveProperty on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.