aesthetic-instrument
great_cto's own committed aesthetic — the instrument panel. Dark five-step surface ladder, exactly one accent, two faces divided by MEANING (Geist speaks,…
Prove a deploy landed — the served revision is the commit you meant, its env is present, and the product does its job — instead of trusting the deploy command's exit code. Also catches server drift before a pull or deploy. Use after any deploy, rollout, restart or server-side
$ npx -y skills add avelikiy/great_cto --skill deploy-landed --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deploy-landedContext preview
The summary Claude sees to decide when to auto-load this skill.
Prove a deploy landed — the served revision is the commit you meant, its env is present, and the product does its job — instead of trusting the deploy command's exit code. Also catches server drift before a pull or deploy. Use after any deploy, rollout, restart or server-side
name: deploy-landed
description: Prove a deploy landed — the served revision is the commit you meant, its env is present, and the product does its job — instead of trusting the deploy command's exit code. Also catches server drift before a pull or deploy. Use after any deploy, rollout, restart or server-side fix ("задеплой", "выкати", "проверь на проде", "почему не обновилось"). Loaded by devops, l3-support, infra-provisioner.
when_to_use: |
Apply when:
- you ran, or are about to report, a deploy, a rollout, a container restart, a hot-fix on a server
- the operator asks whether something is live, or says it "did not update" / "still broken"
- you are about to `git pull` or build on a server that someone may have patched by hand
Do NOT apply to:
- a change that does not reach a runtime (docs, tests only) — CI is the check there
effort: low
allowed-tools: Read, Bash, GrepA deploy command's exit code says the command finished. It does not say the new code is serving, that its configuration arrived, or that the product works. Every trap below produced a green exit and a broken or stale product on a real project:
| Trap | What happened | |---|---| | `git pull` failed, the build went on | The build succeeded from the **old** code and reported success | | `nohup … &` | Exit 0 twice for a process that died at once | | `docker exec` into a container | It does not inherit the entrypoint's env: two "config is missing" readings were false | | `sed -i` / `docker cp` on a bind-mounted file | Replaced the inode; the container kept reading the old file | | A fix applied only on the server | Lost on the next deploy — it was never in git | | wrangler / Pages | `functions/` not deployed, `_headers` ignored, five deploys to notice | | Prod behind SSO | Answers 401/302 to **every** path, including ones that do not exist — proves nothing about a route | | `/health` green | For six hours while the engine made no trades |
Before pulling or building on a host someone can reach by hand:
git -C /srv/app status --porcelain # anything here is a patch that is not in git git -C /srv/app log -1 --format=%H # what the host thinks it runs
Anything uncommitted on the host is either committed first or reported as drift — never overwritten silently, and never left as the only copy of a fix.
1. **Revision.** What is serving equals the commit you meant.
`git merge-base --is-ancestor <commit> <image-tag-sha>`.
it serves has the new content (`grep` for a string the change introduced).
2. **Configuration.** The variables and secrets the new code reads are present in the **running process** — count them against the list the code expects. In a container, read them from PID 1 (`cat /proc/1/environ | tr '\0' '\n'`), not from `docker exec env`. After `--set-secrets`/`--set-env-vars`, check that the ones you did not name are still there: those flags replace the whole set. 3. **Function.** One request that does the product's job and returns something you can compare to a known value — an order created, a row written, a trade placed on paper. A health endpoint proves the process is up, nothing more. 4. **Startup errors.** Logs for the new revision since it started, at WARNING and above. Zero lines is a finding only if you saw the logs flowing at all.
End the deploy report with this block. A check you could not run is `NOT CHECKED` with the reason — never omitted, never `PASS`.
DEPLOY-LANDED <service> @ <commit> revision : PASS — serving <revision/deployment id> built from <sha> config : PASS — 14/14 expected vars present in PID 1 function : PASS — POST /orders → 201, row id 8812 visible in DB startup : PASS — 0 WARNING+ lines since 12:04:10
A FAIL in any line means the deploy is not done, whatever the command printed.
You already have the agent. This is everything around it. great_cto runs Claude Code as a pipeline of 70 specialist agents — an independent model checks each stage before the next builds on it, spending caps refuse rather than warn, and three decisions stay yours: what gets built, how, and whether it ships.
Repo: avelikiy/great_cto
great_cto's own committed aesthetic — the instrument panel. Dark five-step surface ladder, exactly one accent, two faces divided by MEANING (Geist speaks,…
Catalogue of known SDLC anti-patterns that great_cto agents must actively reject when reviewing architecture, plans, code, or post-mortems. Used by architect…
Analyze images, websites, and Figma files to extract their design and generate a `design.md` with token system, component inventory, and reconstruction notes.…
Shared review framework that every domain reviewer (pci, oracle, gov, edtech, healthcare, mlops, etc.) MUST follow. Defines the output artifact (TM-{slug}.md),…
Structured idea generation + multi-LLM debate for the product-owner stage. Diverge (generate genuinely different bets), debate (a 4-persona panel on 4 models…
Run the great_cto controlled Codex lifecycle with controller-owned writes, verifier evidence, human gates and optional artifact release.