Skip to content

infiquetra/deploy

v0.2.3

Tag-promotion deployment operations for Infiquetra repositories. The portable core is the deploy-state skill and the scripts that mint a policy tag, report environment drift, and preview release notes. Claude commands and the release orchestrator live under com.infiquetra.claude.

deploy

Portable tag-promotion operations for Infiquetra repositories. The package mints a policy deployment tag, reports which version each environment is on, and previews the release notes for a candidate range. It refuses a repository that is not github.com/infiquetra/*, and it refuses to promote a snapshot marked unhealthy-v<version> unless the operator passes an explicit override after checking that snapshot by hand.

The package is authored in this repository. It was imported once from infiquetra-claude-plugins at acc99fe7 (upstream 0.2.2) and is maintained here from 0.2.3 on. There is no provenance manifest and no upstream pin to synchronize. The custody decision is recorded in the 2026-09-22 plan.

What is in the package

PathWhat it is
plugin.jsonAgent Plugins manifest. Name, version, and description only
.claude-plugin/plugin.jsonClaude Code packaging manifest. Paths into the adapter and the skill directory, no behaviour
skills/deploy-state/SKILL.mdThe portable skill: tag-promotion policy and how to run the three scripts
skills/deploy-state/scripts/mint_tag.pyBuild a nonprod, staging, production, rollback, or hotfix tag. --dry-run prints the plan and does not push
skills/deploy-state/scripts/query_deployments.pyLatest deployment in each environment, and whether the versions drift
skills/deploy-state/scripts/preview_release_notes.pyShort summary of a commit range. Does not create a GitHub release
com.infiquetra.claude/Claude adapter: four slash commands and the release-orchestrator agent
tests/Package contract tests, including a credential-free --help run of each script
CHANGELOG.mdUpstream history through 0.2.2, then the authored cut

The scripts sit inside the skill directory on purpose. OpenCode, Gemini CLI, Muse, and Hermes install that directory and nothing else, so a script left at the package root would not be there when those harnesses ran it.

Running the scripts

Python 3.12 or newer, standard library only. From the skill directory:

python3 scripts/mint_tag.py --help
python3 scripts/query_deployments.py --help
python3 scripts/preview_release_notes.py --help

A dry-run promotion, which does not create or push a tag:

python3 scripts/mint_tag.py --env nonprod --version 1.2.3 --dry-run

The scripts call git and the GitHub CLI (gh). gh reads GH_TOKEN or GITHUB_TOKEN when one of those is set, and otherwise its own login. The scripts never take a token as an argument. Flags, inference rules, and the per-harness path are in the skill.

How a harness reaches it

Claude Code installs the package root from this repository's marketplace. The root .claude-plugin/plugin.json points commands and agents at com.infiquetra.claude/ and skills at skills/. The slash commands are /deploy, /deploy-status, /deploy-notes, and /deploy-hotfix. The agent is release-orchestrator. ${CLAUDE_PLUGIN_ROOT} in those commands is the installed package root.

OpenCode, Gemini CLI, Muse, and Hermes install skills/deploy-state/. The skill's scripts are the command surface. There is no second one.

A package-scoped client (Claude Code, Codex, Cursor Agent, Qwen, Grok, Agy) receives the whole tree, so the same scripts are at skills/deploy-state/scripts/ under the installed package.

This package does not bundle Fleet Core and does not ship a Model Context Protocol (MCP) server.