myco:monorepo-release-pipeline

Orchestrates dependency-ordered tag releases for the unifi-mcp monorepo's eight packages.

777|101|Updated Apr 21, 2025
One-click install
npx skills add https://github.com/sirkirby/unifi-network-mcp --skill myco-monorepo-release-pipeline
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: myco:monorepo-release-pipeline
Source: https://github.com/sirkirby/unifi-network-mcp/tree/main/.agents/skills/monorepo-release-pipeline
Command: npx skills add https://github.com/sirkirby/unifi-network-mcp --skill myco-monorepo-release-pipeline

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Releasing packages in a monorepo with seven Python packages and one npm worker is error-prone: wrong tag order leaves downstream packages referencing non-existent PyPI versions, unscoped hatch-vcs tag globs contaminate versions across sibling packages, and stale dependency pins pass CI but fail at user install time. This Skill encodes the full release pipeline so every release follows the correct sequence and validation gates.

Core Features & Use Cases

  • Release scope determination: Analyze changed paths per package and apply minimal/standard/full tagging strategies, including the skip-unchanged rule and shared-package cascade rules.
  • Versioning and tag hygiene: Scope hatch-vcs git_describe_command --match globs per package, distinguish app vs. library writeback behavior, and push tags individually in dependency order (core → shared → apps → relay → worker).
  • Pin alignment and validation: Run the pin-alignment CI gate, wheel-metadata checks, exact-core-floor checks, and post-release live smoke tests via uv run python scripts/live_smoke.py.
  • Use Case: When bumping unifi-core, use this Skill to tag core/v* first, confirm PyPI publication, then align downstream pyproject.toml floors and tag shared and app packages in order without breaking installs.

Quick Start

Ask the agent to cut a release for the changed packages in the unifi-mcp monorepo, following the dependency-ordered tagging and validation procedures.

Frequently Asked Questions about myco:monorepo-release-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I release packages in the unifi-mcp monorepo?

Determine which packages changed since their last tag, align downstream dependency bounds in pyproject.toml, then push tags individually in dependency order: core, shared, app servers, relay, worker. Confirm each version on PyPI before pushing the next tag.

How do I scope hatch-vcs version tags per package in a monorepo?

Each package must declare both tag_regex and git_describe_command with a --match glob scoped to its own prefix, such as network/v* or core/v*. Sharing or widening the pattern lets sibling tags contaminate the derived version.

Why does my release pass CI but fail when users pip install it?

Workspace [tool.uv.sources] overrides make uv lock --check pass even with stale pins, so the failure only appears when pip resolves the published wheel against PyPI. Run the wheel-metadata check that inspects Requires-Dist in built wheels before tagging.

Why did only the first release workflow run when I pushed multiple git tags?

Batch-pushing tags with git push origin tag1 tag2 causes GitHub Actions to silently skip all but the first workflow. Push each tag individually and wait for PyPI confirmation before pushing the next one.

When should I tag downstream packages after a shared library change?

Tag downstream packages when their own code changed or when a shared library bump requires them to ship new wheels. Skip tagging if the package's existing pyproject.toml bounds already accommodate the new upstream version and its code is unchanged.

What must I verify before releasing unifi-mcp-shared or unifi-core?

Verify the DI-only rule with no reverse imports from app packages, the scope gate keeping import direction app servers to shared to core, and manually sync relay protocol files in packages/unifi-mcp-relay since no CI gate detects drift there.