Screenpipe Monorepo Release Automation

VerifiedCaution

Automates releasing all screenpipe monorepo components (app, CLI, MCP, JS SDKs). Handles versioning, generates changelogs, and triggers GitHub Actions workflows.

Sby Skills Guide Bot
DevOpsIntermediate
3/11/2026
Claude CodeCursorCodex
#release-automation#monorepo#changelog#github-actions#versioning

Recommended for

Automated summary

This skill drives the screenpipe monorepo release: it checks component versions, generates a user-facing changelog, bumps versions, and triggers the GitHub Actions release workflows.

Strengths

  • Covers every monorepo component (Tauri app, CLI, MCP, JS SDKs) with its version file and matching workflow
  • Lays out an ordered end-to-end procedure: version check, changelog, bump, commit, trigger, build monitoring, publish
  • Gives changelog writing rules (keep customer value, skip CI, refactors and dependency bumps)
  • Flags that workflow_dispatch only produces a draft, enforcing a manual testing step before publishing

Limitations

  • Tightly bound to screenpipe: paths, workflows and magic words do not transfer to other projects
  • Assumes an authenticated gh CLI and access to the CrabNebula Cloud dashboard for testing and publishing
  • Changelog authoring stays manual and depends on the model interpreting commit messages
When to use it

Use it when preparing and triggering a new screenpipe monorepo release, either the desktop app or the CLI.

When not to use it

Avoid it on a different repository, or for plain code changes with no intent to ship a version.

Security analysis

Caution
Quality score84/100

The skill is a legitimate monorepo release workflow, but it wields powerful tooling: git push, gh workflow dispatch, and an auto-publish trigger. No destructive commands, secret exfiltration, obfuscated payloads, or safety-disabling instructions are present, so it is caution rather than risky.

Findings
  • •Uses Bash with git add -A/commit/push, which can stage and push unintended changes.
  • •Triggers GitHub Actions workflows via gh workflow run and can auto-publish by pushing a magic commit message.
  • •Requires authenticated gh and git credentials; a mistaken release tag/version could publish artifacts.
How this analysis is made

Examples

Release the desktop app
Release a new version of the screenpipe desktop app: bump the version, generate the changelog from commits since the last tag, and trigger the release-app workflow.
Full monorepo version check
Check the current versions of the screenpipe app, CLI, MCP and JS packages, then tell me which ones need a bump before the next release.
Monitor a running build
The release-app workflow was just triggered — check the latest run status and report per-platform build results for macOS and Windows.

name: release description: "Release the screenpipe monorepo. Bumps versions, generates changelog, triggers GitHub Actions for app, CLI, MCP, and JS packages." allowed-tools: Bash, Read, Edit, Grep, Write

Screenpipe Monorepo Release Skill

Automate releasing all components of the screenpipe monorepo.

Components & Versions

| Component | Version File | Current Pattern | Workflow | |-----------|--------------|-----------------|----------| | Desktop App | screenpipe-app-tauri/src-tauri/Cargo.toml | version = "X.Y.Z" | release-app.yml | | CLI/Server | Cargo.toml (workspace.package) | version = "0.2.X" | release-cli.yml | | MCP | screenpipe-integrations/screenpipe-mcp/package.json | "version": "X.Y.Z" | release-mcp.yml | | JS Browser SDK | screenpipe-js/browser-sdk/package.json | "version": "X.Y.Z" | npm publish | | JS Node SDK | screenpipe-js/node-sdk/package.json | "version": "X.Y.Z" | npm publish | | JS CLI | screenpipe-js/cli/package.json | "version": "X.Y.Z" | npm publish |

Release Workflow

1. Check Current Versions

echo "=== App ===" && grep '^version' screenpipe-app-tauri/src-tauri/Cargo.toml | head -1
echo "=== CLI ===" && grep '^version' Cargo.toml | head -1
echo "=== MCP ===" && grep '"version"' screenpipe-integrations/screenpipe-mcp/package.json | head -1

2. Generate Changelog

Get commits since last release and generate a user-friendly changelog:

# Get last release tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

# Get commits since last release (or last 50 if no tag)
if [ -n "$LAST_TAG" ]; then
  git log $LAST_TAG..HEAD --oneline --no-merges
else
  git log -50 --oneline --no-merges
fi

Then create changelog at content/changelogs/vX.Y.Z.md with format:

## New Features
- Feature description (from commit context)

## Improvements
- Improvement description

## Bug Fixes
- Fix description

#### **Full Changelog:** [abc123..def456](https://github.com/mediar-ai/screenpipe/compare/abc123..def456)

Guidelines:

  • Only include changes that bring clear customer value
  • Skip: CI changes, refactors, dependency bumps, merge commits
  • Be concise but descriptive
  • Group related changes together

Also copy to screenpipe-app-tauri/public/CHANGELOG.md for in-app display.

3. Bump Version

Edit screenpipe-app-tauri/src-tauri/Cargo.toml to update version.

4. Commit & Push

git add -A && git commit -m "Bump app to vX.Y.Z" && git pull --rebase && git push

5. Trigger Release (Draft Only)

gh workflow run release-app.yml

Important: workflow_dispatch creates a draft only - does NOT auto-publish. This allows manual testing before publishing.

6. Monitor Build Status

# Get latest run ID
gh run list --workflow=release-app.yml --limit=1

# Check status
gh run view <RUN_ID> --json status,conclusion,jobs --jq '{status: .status, conclusion: .conclusion, jobs: [.jobs[] | {name: (.name | split(",")[0]), status: .status, conclusion: .conclusion}]}'

7. Test the Draft Release

  • Download from CrabNebula Cloud: https://web.crabnebula.cloud/mediar/screenpipe/releases
  • Test on macOS and Windows
  • Verify updater artifacts exist (.tar.gz, .sig files)

8. Publish Release

After testing, publish manually via CrabNebula Cloud dashboard, OR commit with magic words:

git commit --allow-empty -m "release-app-publish" && git push

Quick Release (App Only)

# 1. Generate changelog (Claude does this)
# 2. Bump version in Cargo.toml
# 3. Commit and push
git add -A && git commit -m "Bump app to vX.Y.Z" && git push

# 4. Trigger release (draft)
gh workflow run release-app.yml

# 5. Monitor
sleep 5 && gh run list --workflow=release-app.yml --limit=1

Build Status Format

Build <RUN_ID>:
| Platform | Status |
|----------|--------|
| macOS aarch64 | ✅ success / 🔄 in_progress / ❌ failure |
| macOS x86_64 | ✅ success / 🔄 in_progress / ❌ failure |
| Windows | ✅ success / 🔄 in_progress / ❌ failure |

Troubleshooting

Build Failed

gh run view <RUN_ID> --log-failed 2>&1 | tail -100

Cancel Running Build

gh run cancel <RUN_ID>

Re-run Failed Jobs

gh run rerun <RUN_ID> --failed

Missing Updater Artifacts (.tar.gz, .sig)

The CI copies tauri.prod.conf.json to tauri.conf.json before building. If artifacts are missing:

  1. Check tauri.prod.conf.json has "createUpdaterArtifacts": true
  2. Check the "Use production config" step ran successfully

Configuration

Dev vs Prod Configs

  • tauri.conf.json - Dev config (identifier: screenpi.pe.dev)
  • tauri.prod.conf.json - Prod config (identifier: screenpi.pe, updater enabled)

CI automatically uses prod config for releases by copying it before build.

Auto-Publish Behavior

  • workflow_dispatch (manual trigger) → Draft only, no publish
  • Commit with "release-app-publish" → Auto-publish after successful build

Notes

  • Linux desktop app is disabled (bundling issues)
  • App builds take ~25-35 minutes
  • CLI builds take ~15-20 minutes
  • Always pull before push to avoid conflicts
  • Updater artifacts: macOS uses .tar.gz/.sig, Windows uses .nsis.zip/.sig

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/screenpipe-monorepo-release-automation-mmlj2oga/download' --output '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md.part' && mv '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md.part' '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash, Read, Edit, Grep, Write

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && test -s '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/release' && cp -R '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga' '.claude/skills/release'

Cursor
test -f '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && test -s '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/release' && cp -R '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga' '.cursor/skills/release'

Codex
test -f '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && test -s '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/release' && cp -R '.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga' '.agents/skills/release'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga'

openskills read 'screenpipe-monorepo-release-automation-mmlj2oga'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/screenpipe-monorepo-release-automation-mmlj2oga/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills