bounded-post-smoke-ci-hardening-plan

Plan post-smoke CI hardening as a bounded blocker-removal tranche instead of overpromising full green. Includes issue-body alignment, follow-up split rules, honest review bookkeeping, and reliable local validation commands.

5 stars

Best use case

bounded-post-smoke-ci-hardening-plan is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Plan post-smoke CI hardening as a bounded blocker-removal tranche instead of overpromising full green. Includes issue-body alignment, follow-up split rules, honest review bookkeeping, and reliable local validation commands.

Teams using bounded-post-smoke-ci-hardening-plan should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/bounded-post-smoke-ci-hardening-plan/SKILL.md --create-dirs "https://raw.githubusercontent.com/vamseeachanta/workspace-hub/main/.agents/skills/workspace-hub-learned/bounded-post-smoke-ci-hardening-plan/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/bounded-post-smoke-ci-hardening-plan/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How bounded-post-smoke-ci-hardening-plan Compares

Feature / Agentbounded-post-smoke-ci-hardening-planStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Plan post-smoke CI hardening as a bounded blocker-removal tranche instead of overpromising full green. Includes issue-body alignment, follow-up split rules, honest review bookkeeping, and reliable local validation commands.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Bounded Post-Smoke CI Hardening Plan

Use when a repo has already cleared the initial smoke/unblock milestone, but CI is still red on later gates (lint, type check, coverage, quality gate).

## When to use
- A prior issue already unblocked checkout / install / smoke
- The next issue is about "post-smoke hardening"
- Full repo-wide green is not realistic in one bounded tranche
- Adversarial review is likely to reject vague "make CI green" language

## Core rule
Do not promise full CI green unless the evidence supports it.
Plan the next issue as:
1. remove the current first blocker(s)
2. expose the next real failure surface
3. track broader debt explicitly in follow-up issues

## Required planning steps

### 1. Verify the first blocker by OS/job
Use the live CI run and record exactly where each lane stops.
Example split:
- linux/macos stop first at flake8
- windows stops first at mypy
- quality gate is red only because upstream jobs are red

This creates the correct bounded tranche.

### 2. Align the GitHub issue body to the bounded tranche
If the existing issue body still sounds like "restore workflow to green", edit it before pushing the plan to review.
Make the issue explicitly say:
- this tranche removes the current first post-smoke blockers
- this tranche is expected to expose the next failure surface
- broad repo-wide lint/type/coverage debt is not silently absorbed here

If the issue body and plan disagree, adversarial review will keep returning MAJOR.

### 3. Split broad debt into explicit follow-ups
Before claiming excluded surfaces are safe to omit, create or link follow-up issues.
Typical examples:
- broad repo-wide mypy debt
- auxiliary `.agent-os/` or `scripts/` Python files excluded from package lint
- duplicate non-package helper copies outside the maintained surface

Embed live issue evidence for those follow-ups in the plan, not just prose references.

### 4. Prefer deterministic workflow verification over brittle pytest tests for YAML structure
Do not create pytest files just to parse workflow YAML unless the repo explicitly wants that.

Default pattern:
- start with deterministic inspection commands while drafting the plan
- if adversarial review keeps flagging ad hoc inspection as too weak, promote the contract to a persisted verifier script such as `scripts/ci/verify_<workflow>.py`

The persisted verifier should check only the bounded workflow contract, for example:
- both flake8 commands target the intended paths
- smoke step still appears before lint/mypy
- smoke command remains single-line / shell-neutral
- the exact targeted mypy tranche is still present

If you choose the persisted-script route, make the plan explicit about:
- what current-main red state the verifier would catch
- whether the script is only a local verification artifact or also wired into CI/pre-commit later
- why that enforcement level is sufficient for the bounded tranche

This is usually less brittle than workflow-specific pytest tests and stronger than one-off inline inspection snippets.

### 5. Make local validation truly isolated
If the repo injects global pytest addopts (coverage gates, junit, etc.), local TDD commands can fail for unrelated reasons.
Use:
- `uv run python -m pytest ... --noconftest -o addopts=`
for isolated red/green checks.

If the workflow runs only unit-marked tests, make the plan require the affected tests to carry the correct marker, e.g.:
- `pytestmark = pytest.mark.unit`
Otherwise the local red/green test can pass while the workflow silently skips it.

If local mypy needs extra stubs only for the targeted verification, use:
- `uv run --with types-PyYAML mypy ... --follow-imports=silent`
or the equivalent needed package/flags actually proven locally.

If flake8 is not directly spawnable under `uv run flake8 ...`, prefer the reproducible form:
- `uv run --with flake8 python -m flake8 ...`
Record the exact command that reproduced the blocker and the exact command expected to go green.

Do not claim a local validation path is reproducible unless the local command includes the same extra dependency assumptions and flags the plan relies on.

### 6. Be honest about review artifacts
Empty review files are invalid artifacts, not completed reviews.
In the plan summary:
- name valid provider artifacts accurately
- mark empty artifacts as invalid
- do not invent findings for empty files
- do not move to `status:plan-review` until the review gate you claim is actually satisfied

## Recommended acceptance shape
A good bounded post-smoke CI plan should require:
- issue body aligned to bounded scope
- exact first-blocker removal target(s)
- exact workflow edits named
- exact local validation commands
- explicit recording of the next exposed failure surface after the blocker-removal tranche
- explicit linkage to follow-up issues for excluded broad debt
- explicit statement of any temporary gate narrowing tradeoff (for example, targeted mypy files instead of broad `src/`) and where re-expansion debt is tracked
- explicit note on likely next blocker after the current tranche (for example coverage thresholds) so "not fully green yet" is disclosed up front
- an explicit CI-parity note distinguishing isolated local red/green commands from the real workflow invocation
- at least one attested real-workflow command/result for the likely next blocker, not just a hypothetical warning

### CI-parity hardening rule
If you use isolated local pytest commands such as `--noconftest -o addopts=` for TDD, the plan must also say what real workflow command will still run in CI and what divergence remains. Do not let review readers infer equivalence when there is none.

Required pattern:
1. keep isolated local commands for bounded red/green work
2. separately capture the real workflow command shape (markers, conftest/addopts, coverage thresholds)
3. state explicitly that local green does not imply CI green when the workflow still enforces broader coverage or different discovery behavior

Example of useful attested next-blocker evidence:
- `pytest tests/unit/ --cov=src --cov=. --cov-report=term-missing --cov-fail-under=80 --verbose -m unit`
- result: fails on coverage threshold even after the current lint/type tranche

This evidence should be folded into the plan so the success contract reads as:
- remove the current first blocker(s)
- expose/record the next real blocker
- do not imply end-to-end green if the real workflow still predictably fails at coverage

### Persisted verifier enforcement rule
If adversarial review rejects ad hoc YAML inspection and pushes you toward a persisted verifier script (for example `scripts/ci/verify_<workflow>.py`), the plan must specify the verifier's enforcement level.

Do not stop at "we will add a verifier script." Also say one of:
- local-only verification artifact for this tranche, with rationale
- wired into CI in the same issue
- wired into pre-commit in the same issue
- deferred enforcement, with an explicit follow-up issue

Also define the verifier's concrete red state on current main. Example assertions:
- wrong flake8 target scope
- smoke step ordered after lint/mypy
- shell-specific multiline smoke command reintroduced
- mypy target widened/narrowed away from the approved tranche

Without this, review will correctly treat the verifier as under-specified.

## Reusable command patterns

### Isolated pytest
`cd <repo> && uv run python -m pytest <path> --noconftest -o addopts= -q`

### Local targeted mypy with ad hoc stub dependency
`cd <repo> && uv run --with types-PyYAML mypy <file1> <file2> --ignore-missing-imports`

### Deterministic workflow inspection
Use a short `uv run python - <<'PY' ... PY` or equivalent assertion block to check:
- exact lint target paths
- smoke-before-lint ordering
- shell-neutral smoke command shape

## Red flags caught in review
If you see any of these, rewrite before plan-review:
- issue body says "green the workflow" but plan only removes first blockers
- plan excludes surfaces without linked follow-up issues
- local pytest commands still inherit repo-wide coverage gates
- review summary cites findings from empty artifact files
- acceptance criteria only say "advance past blockers" without requiring capture of the next failure surface

Related Skills

blender-worktree-test-hardening

5
from vamseeachanta/workspace-hub

Recover and harden digitalmodel Blender automation work in isolated worktrees when uv/editable dependency paths break and local machines lack a Blender executable.

plan-review-prompt-refresh-after-plan-edits

5
from vamseeachanta/workspace-hub

Refresh reviewer prompt files from the latest on-disk plan before every adversarial re-review. Prevents Codex/Gemini from critiquing stale plan text after local edits.

workspace-hub-overnight-plan-monitor

5
from vamseeachanta/workspace-hub

Monitor and reconcile workspace-hub overnight planning or implementation batches, including process status, result artifacts, issue/commit verification, and controlled failed-lane recovery.

plan-gated-issue-execution-wave

5
from vamseeachanta/workspace-hub

Execute a multi-issue architecture/planning wave in a plan-gated repo, then safely transition approved issues into implementation with file-based Codex prompts, local approval markers, subprocess monitoring, and cleanup handling for sandbox/hook edge cases.

mixed-ops-vs-repo-fix-plan-boundary

5
from vamseeachanta/workspace-hub

Plan mixed operational-vs-repo remediation issues by proving live-state classification first, then only proposing code changes for confirmed repo-owned failure paths.

wave-based-parallel-plan-execution

5
from vamseeachanta/workspace-hub

Orchestrate phase execution by discovering dependencies, grouping into waves, spawning subagents, and collecting results with optional wave filtering

plan-gated-issue-validation-workflow

5
from vamseeachanta/workspace-hub

Systematic validation pattern for plan-approved GitHub issues with pre-existing deliverables

plan-gated-issue-implementation

5
from vamseeachanta/workspace-hub

Workflow for executing pre-approved GitHub issues with mandatory validation checkpoints

external-drive-ingest-planning

5
from vamseeachanta/workspace-hub

Plan safe external-drive ingests into repo-aligned storage such as /mnt/ace: read-only mounts, manifests, staged rsync, dedupe-merge gates, GitHub issue traceability, and governance/execution split.

user-approved-plan-state-sync

5
from vamseeachanta/workspace-hub

Reconcile GitHub and local repo state when a plan has been user-approved, including direct approval messages that require creating the local marker and moving the issue to status:plan-approved.

ten-agent-pre-plan-review-wave

5
from vamseeachanta/workspace-hub

Launch and verify a 10-agent planning-only wave that moves open GitHub issues into status:plan-review using one isolated worktree per issue, wave-specific continuation cron, and post-run artifact-reconciliation checks.

static-site-build-artifact-plan-review

5
from vamseeachanta/workspace-hub

Plan-review pattern for static-site fixes where the deployed artifact is generated from source files (e.g. sitemap/robots/static assets). Prevents review churn by separating durable regression checks from one-time migration verification and by validating built output, not just source files.