Analyze GitHub Action Logs
withastro/astro
Analyze recent GitHub Actions workflow runs to identify patterns, mistakes, and improvements.
Set up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow.
$ npx skills add tutti-os/tutti --skill tutti-app-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tutti-os/tutti tutti-app-release --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/tutti-os/tutti.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/tutti-app-release .claude/skills/tutti-app-release && 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 "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .claude/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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/tutti-os/tutti/tree/main/.codex/skills/tutti-app-releaseType 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 tutti-os/tutti --skill tutti-app-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tutti-os/tutti tutti-app-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tutti-os/tutti.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/tutti-app-release .agents/skills/tutti-app-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .agents/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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 tutti-os/tutti --skill tutti-app-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tutti-os/tutti tutti-app-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tutti-os/tutti.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/tutti-app-release .cursor/skills/tutti-app-release && 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 "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .cursor/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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/tutti-os/tutti.git --path .codex/skills/tutti-app-release--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 tutti-os/tutti --skill tutti-app-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tutti-os/tutti tutti-app-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tutti-os/tutti.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/tutti-app-release .gemini/skills/tutti-app-release && 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 "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .gemini/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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 tutti-os/tutti tutti-app-releaseInstalls 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 tutti-os/tutti --skill tutti-app-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tutti-os/tutti.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/tutti-app-release .github/skills/tutti-app-release && 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 "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .github/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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 tutti-os/tutti --skill tutti-app-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tutti-os/tutti tutti-app-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tutti-os/tutti.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/tutti-app-release .opencode/skills/tutti-app-release && 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 "tutti-app-release" agent skill from https://github.com/tutti-os/tutti/tree/main/.codex/skills/tutti-app-release into .opencode/skills/tutti-app-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tutti-app-release", 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.
tutti-app-releaseSet up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow.
Tutti App Release is an agent skill from tutti-os/tutti. Set up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow. Use for caller workflows, tutti.app.json manifests, @tutti-os/app-release-tools, S3/CloudFront release hosting, latest.json, versions.json, catalog.json, catalog-only repairs, and App Center visibility issues.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in DevOps & Cloud, covering CI/CD and File uploads and storage. It works with GitHub Actions. The repository describes itself as: Where people and agents build in tune. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 207beee. 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:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From 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.
Tutti App Release loads about 4.1k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 1,598 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 tutti-os/tutti at commit 207beee, republished under its Apache-2.0 licence (© tutti-os). 1,598 words, ~4,066 tokens.
.claude/skills/tutti-app-release/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill when an external app repository publishes a remote Tutti workspace app into App Center release metadata.
The external repository calls the reusable workflow from the Tutti/Tutti repository:
uses: tutti-os/tutti/.github/workflows/publish-tutti-app-release.yml@mainThat workflow builds one app package, runs @tutti-os/app-release-tools, uploads immutable release files plus mutable latest.json and versions.json, and can optionally merge that app into the shared catalog.json.
Inspect before acting:
tutti.app.json, package script, and recent GitHub Actions runs.For catalog publication:
publish_catalog: false. This uploads a new app version and updates apps/<appId>/latest.json and versions.json; App Center will see it the next time catalog.json is published.publish_catalog: true. This uploads the app release, then immediately merges that release into catalog.json.catalog_only: true. Use this after a release already succeeded when the user forgot to publish catalog, wants to validate first, or wants to refresh catalog without bumping or uploading a new version.catalog_only, use that. If it does not, use the Tutti catalog workflow directly or add the caller input when the user wants that repo to support catalog-only dispatch.For versioning:
release_bump (patch, minor, or major); the reusable workflow calculates the next version from the greater of the packaged manifest version and existing release tags, then creates the tag after the S3 release verifies.release_bump empty. The workflow uses manifest.version+<short git sha> from the packaged manifest and does not create a release tag.For reusable workflow changes:
min_tutti_version explicitly. Use 0.0.0 only for releases that are safe for every legacy Tutti client.The caller repository must be compatible with pnpm. The reusable workflow runs pnpm install --frozen-lockfile before package_command, so the repository should commit pnpm-lock.yaml and define the package script used by package_command.
The caller repository must commit a source manifest:
tutti.app.jsonThe generated package directory must contain:
tutti.app.jsonbootstrap.shAGENTS.mdicon.png or icon.svgThe source and package manifests must use schemaVersion: "tutti.app.manifest.v1". appId must match the workflow app_id input.
The workflow writes release objects under:
apps/<appId>/<version>/
apps/<appId>/latest.json
apps/<appId>/versions.jsonFor production, the workflow derives the next release version by fetching
existing stable semver tags with the configured release_tag_prefix (default
<appId>-v), reading the packaged manifest version, and applying
release_bump to the greater version. It creates the annotated release tag after
the S3 release has been uploaded and verified. If release_bump is empty, the
workflow uses manifest.version+<short git sha> from the packaged manifest,
which is intended for staging.
Use this as the default single-app production caller. Production releases should be workflow-driven so publishing does not need to write version bump commits back to the protected source branch. Keep new app repositories as close to this reference as their package command allows.
name: Publish Tutti App Production
on:
workflow_dispatch:
inputs:
release_bump:
description: Semver bump to publish.
required: true
type: choice
default: patch
options:
- patch
- minor
- major
publish_catalog:
description: Whether to publish the production App Center catalog after this release.
required: false
type: boolean
default: true
catalog_only:
description: Whether to skip app release upload and only publish the existing latest release to catalog.
required: false
type: boolean
default: false
permissions:
contents: write
id-token: write
jobs:
publish:
uses: tutti-os/tutti/.github/workflows/publish-tutti-app-release.yml@main
with:
app_id: your-app-id
min_tutti_version: "REQUIRED_MIN_TUTTI_VERSION"
package_command: pnpm package:tutti
package_dir: build/tutti-app/package
icon_path: build/tutti-app/package/icon.png
release_tag_prefix: your-app-id-v
release_bump: ${{ inputs.release_bump }}
create_release_tag: ${{ !inputs.catalog_only }}
publish_catalog: ${{ inputs.publish_catalog }}
catalog_only: ${{ inputs.catalog_only }}
aws_region: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_AWS_REGION || vars.TUTTI_APP_RELEASES_AWS_REGION }}
aws_role_arn: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_AWS_ROLE_ARN || vars.TUTTI_APP_RELEASES_AWS_ROLE_ARN }}
s3_bucket: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_S3_BUCKET || vars.TUTTI_APP_RELEASES_S3_BUCKET }}
s3_prefix: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_S3_PREFIX || vars.TUTTI_APP_RELEASES_S3_PREFIX }}
release_assets_base_url: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_BASE_URL || vars.TUTTI_APP_RELEASES_BASE_URL }}
catalog_cloudfront_distribution_id: ${{ vars.TUTTI_APP_RELEASES_PRODUCTION_CLOUDFRONT_DISTRIBUTION_ID || vars.TUTTI_APP_RELEASES_CLOUDFRONT_DISTRIBUTION_ID || '' }}Use only workflow_dispatch for staging unless every merge should publish
staging too. Keep staging and production on separate S3 prefixes and base URLs.
Pin the reusable workflow ref only when the caller needs reproducible release behavior:
uses: tutti-os/tutti/.github/workflows/publish-tutti-app-release.yml@<tag-or-commit-sha>For monorepos that publish multiple apps, keep the caller shape the same but resolve a target matrix from repository config. Each matrix target should expose the same reusable workflow inputs:
app_id: ${{ matrix.target.app_id }}
min_tutti_version: ${{ matrix.target.min_tutti_version }}
package_command: ${{ matrix.target.package_command }}
package_dir: ${{ matrix.target.package_dir }}
icon_path: ${{ matrix.target.icon_path }}
release_tag_prefix: ${{ matrix.target.release_tag_prefix }}
release_bump: ${{ inputs.release_bump }}
create_release_tag: ${{ !inputs.catalog_only }}Required release inputs:
app_id: app id, matching the source and package tutti.app.json.min_tutti_version: minimum compatible Tutti SemVer for a normal release. It has no permissive default; catalog-only repairs read the stored rule from versions.json.aws_region: AWS region for the release bucket.aws_role_arn: IAM role assumed through GitHub OIDC.s3_bucket: bucket receiving release files.Conditionally required inputs:
package_command: builds or copies the final package. Required unless catalog_only is true.package_dir: package directory produced by package_command. Required unless catalog_only is true.release_assets_base_url: public base URL for s3_bucket plus s3_prefix. Required unless catalog_only is true.Optional release/version inputs:
icon_path: package-local icon path override. Use when the manifest icon should be resolved from a generated package path.release_tag_prefix: release tag prefix used when calculating and creating production release tags. Defaults to <appId>-v.release_bump: production semver bump. Valid values are patch, minor, and major. Leave empty for staging.create_release_tag: create the annotated release tag after the S3 release verifies. Production callers should set this to true; staging callers should leave it false.Optional catalog inputs:
publish_catalog: after uploading the app release, merge that release into catalog.json. Default: false.catalog_only: skip package build, release metadata generation, and app release upload; rebuild the app from apps/<appId>/versions.json into catalog.json. Default: false.catalog_cloudfront_distribution_id: CloudFront distribution id for invalidating /<s3_prefix>/catalog.json after catalog upload. Default: empty. Caller workflows normally read this from TUTTI_APP_RELEASES_PRODUCTION_CLOUDFRONT_DISTRIBUTION_ID or TUTTI_APP_RELEASES_CLOUDFRONT_DISTRIBUTION_ID; prefer storing the shared value as an organization variable with selected repository access, and use repository variables only for overrides or when organization variables are unavailable. If neither variable is configured, invalidation is skipped and readers rely on the catalog cache TTL.Optional runtime/tooling inputs:
runner: GitHub runner label. Default: ubuntu-latest.node_version: Node.js version. Default: 24.pnpm_version: pnpm version. Default: 10.11.0.release_tools_package: app release tools package spec. Default: @tutti-os/app-release-tools@latest. Pin this only when debugging or when the reusable workflow depends on a version not yet intended for general use.An app release writes apps/<appId>/latest.json and updates apps/<appId>/versions.json. App Center sees it only after the shared catalog includes that app.
Publishing modes:
publish_catalog: false and catalog_only: false. This updates apps/<appId>/latest.json and versions.json; catalog changes wait until a later catalog publish.publish_catalog: true. This publishes the app and then updates catalog.json in the same run.catalog_only: true after a release already exists. This reads the existing apps/<appId>/versions.json and updates catalog.json without rebuilding, uploading, or bumping a new app version.Catalog merge semantics:
app_id. publish_catalog: true and catalog_only: true merge only that app's apps/<appId>/versions.json into catalog.json.catalog.json will not be picked up by another app's later publish_catalog: true run.app_ids. Use that path when refreshing multiple apps, or run each app's catalog-only dispatch separately.app_ids.catalog.json keeps schema tutti.app.catalog.v1. Its apps[] array contains the highest active minTuttiVersion: 0.0.0 release for old clients. New clients read the additive compact compatibility.apps frontier. Mutable metadata writes use S3 ETag preconditions because GitHub concurrency groups do not serialize workflows across different repositories.
Catalog-only can be exposed by the app repository caller workflow, or run from the Tutti catalog workflows:
Recommended inputs for refresh/repair:
catalog_mode: mergeapp_ids: the released remote app id, such as vibe-designUse replace only for deliberate full catalog replacement. Built-in app ids such as automation are not published through the remote catalog workflow.
Catalog writes:
s3://<s3_bucket>/<s3_prefix>/catalog.jsonIf catalog.json changed but App Center still shows old metadata, check CloudFront invalidation and confirm TUTTI_APP_CATALOG_URL points at the expected staging or production URL.
The caller repository needs a GitHub OIDC role that can write release files:
s3://<s3_bucket>/<s3_prefix>/apps/<appId>/<version>/*
s3://<s3_bucket>/<s3_prefix>/apps/<appId>/latest.json
s3://<s3_bucket>/<s3_prefix>/apps/<appId>/versions.jsonWhen publish_catalog or catalog_only is used in the app release workflow, that role also needs catalog read/write access:
s3://<s3_bucket>/<s3_prefix>/catalog.jsonCloudFront invalidation requires permission for the matching distribution id. Store shared non-secret configuration such as the CloudFront distribution id in GitHub organization variables with selected repository access when possible; use repository variables only for repository-specific overrides.
Before relying on GitHub Actions, validate the package locally:
pnpm --package @tutti-os/app-release-tools@latest dlx build-tutti-app-release \
--app-id your-app-id \
--package-dir build/tutti-app/package \
--output-dir /tmp/tutti-app-release \
--base-url https://cdn.example.com/tutti-app-releases \
--version 0.1.0+local \
--git-sha localExpected output:
/tmp/tutti-app-release/apps/<appId>/<version>/<appId>-<version>.zip/tmp/tutti-app-release/apps/<appId>/<version>/release.json/tmp/tutti-app-release/apps/<appId>/latest.jsonNormal publishing also creates or updates the remote apps/<appId>/versions.json compatibility index.
tutti-os/tutti/.github/workflows/publish-tutti-app-release.yml.package_command produces package_dir.package_dir/tutti.app.json is valid JSON and appId matches workflow app_id.bootstrap.sh, AGENTS.md, icon asset, and runtime files.s3_prefix and release_assets_base_url point to the same public release root.catalog_only or the Tutti catalog workflow instead of a new release.manifest appId must match app id: align workflow app_id and manifest appId.missing tutti.app.json: fix package generation so the package directory contains a manifest.release_bump must be one of major, minor, or patch: production callers must pass a supported bump type.create_release_tag requires release_bump: release tags are only created for workflow-driven production bumps.manifest icon asset missing: include the asset inside the package or pass icon_path.AccessDenied: check OIDC trust policy, role ARN, bucket policy, region, prefix, and catalog/CloudFront permissions.catalog_only or the Tutti catalog workflow in merge mode.© tutti-os, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .codex/skills/tutti-app-release of tutti-os/tutti.
Open the folder on GitHubat commit 207beee
Tutti App Release 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 |
|---|---|---|---|---|---|---|
| Tutti App Release this skilltutti-os/tutti | 3.8k | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Analyze GitHub Action Logswithastro/astro | 63k | 1 repos | ~1.3k | Automated safety check: Pass | Custom licence | |
| GitHub Actions Templatesbartstc/vite-ts-react-template | 122 | 14 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Nushellccusage/ccusage | 19k | — | ~938 | Automated safety check: Pass | Custom licence | |
| Repo Hygiene Scan and FixQwenLM/qwen-code | 28k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 260 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence |
withastro/astro
Analyze recent GitHub Actions workflow runs to identify patterns, mistakes, and improvements.
bartstc/vite-ts-react-template
Create production-ready GitHub Actions workflows for automated testing, building, and deploying applications.
ccusage/ccusage
Guides ccusage Nushell scripts. An agent skill from ccusage/ccusage.
QwenLM/qwen-code
Scheduled CI skill that scans a repository for small, certain docs, test and code hygiene issues and fixes them on one branch with a commit per finding.
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
Chachamaru127/claude-code-harness
Diagnoses failing CI pipelines and tests, deciding first whether the test or the implementation is at fault, and hands hard cases to a dedicated fixer subagent.
tutti-os/tutti
A skill your agent uses when working with @tutti-os/ui-system components, replacing local UI with shared components, querying component ids or metadata, promoting UI into shared base or business…
tutti-os/tutti
Analyze Chrome, Chromium, Electron, React DevTools, or Perfetto-compatible JSON traces and audit user-reported profiling findings without loading large artifacts into context; prove…
tutti-os/tutti
From a Tutti checkout, run, audit, freshly replay, publish, or diagnose Session Replay cassettes that are driven by case-repository scenario scripts (CDP), not by interactive UI recording.
tutti-os/tutti
Create, convert, or repair one Tutti workspace app as either a self-contained publishable package under package/ or a Chrome-style local debug app under .tutti/dev-app/.
tutti-os/tutti
Build or evolve a complex agent-enabled Tutti workspace app repository.
tutti-os/tutti
Review tutti git diffs for project structure, layering, module ownership, and duplicate event-center infrastructure by planning focused architecture review tasks, then having the main agent…
Works with
Categories
Set up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow. Tutti App Release is an agent skill from tutti-os/tutti. Set up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow.
Tutti App Release fits situations like: caller workflows; tutti.app.json manifests; @tutti-os/app-release-tools; S3/CloudFront release hosting.
Run `npx skills add tutti-os/tutti --skill tutti-app-release -a claude-code`. Or copy the skill folder (.codex/skills/tutti-app-release in tutti-os/tutti) into .claude/skills/tutti-app-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tutti-os/tutti --skill tutti-app-release -a codex`. Or copy the skill folder (.codex/skills/tutti-app-release in tutti-os/tutti) into .agents/skills/tutti-app-release 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 tutti-os/tutti --skill tutti-app-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tutti-app-release, .gemini/skills/tutti-app-release, .github/skills/tutti-app-release and .opencode/skills/tutti-app-release in your project.
Going by SKILL.md and its folder, Tutti App Release needs the command-line tools its instructions call (pnpm). Our summary lists: Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Tutti App Release is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k 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 Tutti App Release: Analyze GitHub Action Logs (withastro/astro, 63k stars), GitHub Actions Templates (bartstc/vite-ts-react-template, 122 stars), Nushell (ccusage/ccusage, 19k stars) and Repo Hygiene Scan and Fix (QwenLM/qwen-code, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tutti-os (a GitHub organization) maintains it in tutti-os/tutti, which has 3,811 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 8, 2026.
Source: tutti-os/tutti on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.