一键导入
ship
Commit, verify, tag, and push with the repo's pre-flight gate suite (lint, type, drift gates, docs build)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Commit, verify, tag, and push with the repo's pre-flight gate suite (lint, type, drift gates, docs build)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Reconstruct Dazzle/HM judgement from stems before inventing structure
Reconstruct Dazzle/HM judgement from stems before inventing structure
Run all quality checks on modified files — the on-demand pre-ship quality gate
Use when authoring or revising trial.toml scenarios for dazzle qa trial — puts an LLM in the shoes of a real business user evaluating a Dazzle app. Use when the user asks to "set up qa trials", "write a trial scenario", "evaluate this app as a user", or mentions qualitative/trial/business-user testing. Also use when a trial report is sparse or unhelpful — the scenario itself is usually the root cause.
Use when writing or editing Dazzle .dsl files — syntax rules, the mistakes agents actually make, and pointers to the drift-gated references. Complements (never replaces) CLAUDE.md's DSL Quick Reference.
Use when the user wants to generate a stakeholder-facing English specification document (SPECIFICATION.md) from a Dazzle DSL project — for investors, business leaders, founders, or non-technical decision-makers. Reverses the usual DSL→app flow into DSL→prose.
| name | ship |
| description | Commit, verify, tag, and push with the repo's pre-flight gate suite (lint, type, drift gates, docs build) |
Commit all current changes and push to the remote. Follow these steps exactly.
Local ↔ CI concordance is documented in
docs/contributing/local-ci-concordance.md. The single runner is
scripts/ci_local.sh (Makefile: ci-fast / ci-core).
git status (never use -uall) and git diff --stat to understand what changed.Decide the tier from the ship arguments / intent:
| Situation | Tier | Command |
|---|---|---|
Default /ship, patch with no version bump | Tier 0 (ship-fast) | make ci-fast |
/ship minor, /ship major, or any commit that changes pyproject.toml version = | Tier 1 (ci-core) | make ci-core |
| Operator asked for maximum local confidence | Tier 1 | make ci-core |
# Tier 0 — default (~2–3 min, no DB)
make ci-fast
# → bash scripts/ci_local.sh tier0
# ruff check --fix + format
# mypy src/dazzle
# pytest tests/unit -m gate
# mkdocs build --strict
# Tier 1 — before release tags (~full non-e2e CI mirror)
make ci-core
# → bash scripts/ci_local.sh tier1
# uv sync --frozen (CI extras, Python 3.12)
# scripts/build_dist.py
# ruff check + format --check
# mypy src/dazzle
# CSS clip/raw-ramp + dazzle coverage --fail-on-uncovered
# bandit + pip-audit (hard-fail)
# JWT fuzz + shapes RBAC matrix
# pytest -n auto --dist loadgroup -m "not e2e"
# mkdocs build --strict
Do not re-expand these steps ad-hoc in the agent transcript — call the
Makefile / script so extras lists and command strings stay one source of truth
with .github/workflows/ci.yml. If you change CI, update scripts/ci_local.sh
constants in the same change.
mypy command is always mypy src/dazzle (same as CI type-check job). The
local↔CI divergence is installed extras, not flags: Tier 1 syncs the
type-check extras superset (dev,llm,mcp,mobile,postgres,pitch,i18n,viewport,perf,lsp).
Tier 0 may warn if the active interpreter ≠ 3.12 — for release tags, prefer
Tier 1.
Gate marker (pytest -m gate): every fast, DB-free structural gate must
carry pytestmark = pytest.mark.gate (see tests/unit/test_gate_marker_complete.py).
Ratchet failures → refactor or regenerate baseline (dazzle fitness code --write-baseline); never bypass.
Spec strict (only if [spec] strict = true in the project's dazzle.toml):
dazzle spec status --fail-on-strict
If tier0/tier1 or spec-strict fails, fix before committing. Do NOT ship red.
Tier 0 is not full GitHub CI: Postgres services, Playwright walks, guide-walk matrix, and multi-version python-tests still only run on Actions. See the concordance doc for Tier 2.
git add -A or git add .).git log --oneline -10).Co-Authored-By: line naming the agent — match the signature style visible in recent commits; harnesses that supply their own trailer automatically need nothing extra).git commit -m.pyproject.toml was modified in this commit by running git diff HEAD~1 HEAD -- pyproject.toml.version = "X.Y.Z" line changed, extract the new version and create a lightweight tag: git tag vX.Y.Z.make ci-core) in this session (or operator-confirmed) before git push origin vX.Y.Z.git push to push the current branch to origin.git push origin vX.Y.Z. This triggers release workflows (PyPI, Homebrew). Never git push origin --tags — a clone that still holds historically-pruned patch tags re-publishes ALL of them (the 2026-07-02 incident re-pushed 257 pruned v0.82–v0.87 tags; the prune-old-releases workflow had to be dispatched to sweep them).After a successful push, emit the fix-deployed signal so /improve lanes
re-verify rows the change may affect (the cross-lane contract in
improve.md names /ship as this signal's emitter — previously declared
but never wired, so lanes sat on stale verification state across releases):
python -c "
from dazzle.cli.runtime_impl.ux_cycle_signals import emit
emit(source='ship', kind='fix-deployed', payload={'sha': '$(git rev-parse --short HEAD)', 'version': 'vX.Y.Z'})
"
If step 4 pushed a published-release tag — one matching vX.Y.0, the same
endsWith('.0') condition the release workflows use to publish to PyPI/Homebrew —
additionally emit dazzle-updated (the cross-lane contract's "(external — releases)"
signal). This is what tells /improve a new framework version is live: lanes mark
affected rows for re-verification and the driver resets the explore budget
(new release = fresh explore territory):
python -c "
from dazzle.cli.runtime_impl.ux_cycle_signals import emit
emit(source='ship', kind='dazzle-updated', payload={'version': 'vX.Y.0', 'sha': '$(git rev-parse --short HEAD)'})
"
Both are best-effort — a failure here never blocks the ship; note it and continue.
git status one last time to confirm the worktree is clean.