用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/lukemcqueen/hermes-cortex --skill ci-pipeline-hardening命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | ci-pipeline-hardening |
| description | Fix CI gates: bounded subsets, parity, coverage baselines. |
| version | 1.0.0 |
| author | Titus |
| license | MIT |
| platforms | ["linux","macos"] |
| metadata | {"hermes":{"tags":["ci","gitlab","github-actions","gates","coverage","typecheck"],"related_skills":["ci-cd-pipeline","test-driven-development"]}} |
Class-level playbook for auditing and fixing an existing CI pipeline before a release — the gap-analysis pass you run when a review or story says "CI is missing/broken" but a pipeline file already exists. Focus: gate correctness, bounded subsets, coverage honesty, and the small command pitfalls that break jobs silently.
npxBefore believing a review that says CI is absent, check history — reviews are written against a commit and go stale fast:
git log --oneline --all -- .gitlab-ci.yml .github/workflows/ci.yml .circleci
One review dated 2026-08-20 claimed "no CI in repo" while .gitlab-ci.yml had
been committed 12 days earlier. Trust git, not the review's assertion.
npx <flags> <cmd> with flags AFTER the command? npx tsc --noEmit --prefix apps/web passes --prefix to tsc → job fails. Fix: npm run typecheck --prefix apps/web (npm accepts --prefix after the subcommand) or npx --prefix apps/web tsc --noEmit. npx and npm flag placement are NOT symmetric.grep the pipeline for any repo consistency gate (e.g. scripts/check_job_parity.py). A gate that isn't in CI is not a gate. Call it BEFORE the tests it guards.pytest --cov=app --cov-report=xml and vitest run --coverage must exist in the pipeline, and the numbers must be recorded in the test-strategy ADR — with ratcheting targets (e.g. web 56% → 80% over two waves), not a bare ">90%" claim.python -c "import yaml; yaml.safe_load(open('.gitlab-ci.yml'))" from a venv with PyYAML).pytest <core-files> --cov=app --cov-report=term-missing — record total % and test count.vitest run --coverage — record statements/lines %.--cov-report=xml artifact for API; -- --coverage for web).tsc --noEmit → 0 errors (also catches fixture drift — see below)tsc). When an API type gains required fields (e.g. m26 name separation added firstname/firstname_ko/lastname/lastname_ko to MemberRead/PublisherRead/CreatorListRead and first_name/last_name to UserResponse), 22 errors across 8 web fixture files appeared. Fix fixtures in the SAME change as the type change — never defer to a "separate cleanup PR" — then re-run tsc --noEmit to 0 errors. Publishers keep nulls (never auto-split); realistic parts for members/creators.test-web needs -- --coverage passthrough: npm run test --prefix apps/web runs vitest run without coverage; add -- --coverage to exercise the cov report in CI.asyncpg.exceptions.CannotConnectNowError: the database system is in recovery mode is a known postgres blip — retry the run after ~15s before investigating.