协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
testing-and-release【开发与工程】Select safe ODS validation lanes, interpret CI and release gates, and triage test, smoke, simulation, fleet, and secret-scan results.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this sub-skill when an ODS task asks which tests to run, why a GitHub Actions lane failed, how to interpret release-readiness evidence, or how to validate changes to tests, CI, validation scripts, smoke/simulation/fleet harnesses, release claim docs, pre-commit hooks, or secret scanning.
Identify changed paths and classify them before running broad commands. Prefer focused, source-backed lanes over make gate or fleet runs.
Run the bundled read-only selector when paths are known:
python3 sub-skills/testing-and-release/scripts/select_validation_lane.py -- <changed paths>
The selector accepts paths relative to either the outer ODS repository root or the inner ods/ product root. It only prints recommendations; it does not run tests, start Docker, install packages, or edit files.
Read references/test-selection.md for the lane matrix, Make targets, safety classes, native candidate map, and path-to-test routing.
Read references/ci-and-release.md when interpreting GitHub Actions, release gates, User Green claims, validation receipts, or support-matrix wording.
Read references/troubleshooting.md when a lane fails because of missing dependencies, Docker/fleet constraints, platform skips, secret scan hits, or expensive checks.
ods/Makefile, ods/tests/, ods/scripts/validate*.sh, ods/scripts/release-gate.sh, ods/scripts/simulate-installers.sh, or ods/tests/run-bats.sh behavior..github/workflows/, especially lint, dashboard, Linux integration, matrix smoke, compose/env/catalog validation, PowerShell, type-check, and secret-scan lanes.docs/RELEASE_VALIDATION.md, docs/VALIDATION-MATRIX.md, support/claim docs, changelog/version files, or release notes.make lint, make test, make bats, make smoke, make simulate, make gate, distro-fleet, Incus VM, post-install validation, and real-hardware fleet costs.../installers-and-platforms/SKILL.md; return here for validation lane choice.../hardware-and-models/SKILL.md; return here for tier/model test selection.../services-and-extensions/SKILL.md; return here for manifest/compose validation lane choice.../dashboard-and-api/SKILL.md; return here for CI/test lane interpretation.../ops-cli-and-host-tools/SKILL.md; return here for focused CLI and release validation.make gate, scripts/release-gate.sh, distro fleet, Incus VM fleet, full product install, post-install validation, model downloads, or real-hardware fleet checks by default. Mark them as expensive or host-dependent and get explicit user intent.scripts/validate.sh, ods-test.sh, functional tests, model probes, and lifecycle checks require a running or installed ODS stack. Treat them as post-install/product validation, not cheap source checks.docker compose up, but it still depends on Docker/Compose availability and may read environment variables. Avoid inventing secrets; use documented CI placeholders or fixtures.For a typical code change, start with the selector and then run only the returned focused lanes. Common safe candidates from an ODS checkout include:
cd ods
make lint
bash tests/test-doc-links.sh
bash tests/contracts/test-installer-contracts.sh
bash tests/contracts/test-preflight-fixtures.sh
bash tests/test-tier-map.sh
bash tests/test-resolve-compose-resilient.sh
python3 scripts/audit-extensions.py --project-dir .
bash tests/run-bats.sh
Escalate to make smoke, make simulate, make gate, fleet, post-install, or real-hardware lanes only when the changed surface and release risk justify the cost.
This sub-skill distills relative source evidence from ods/Makefile, ods/tests/, .github/workflows/, ods/docs/TESTING.md, ods/docs/RELEASE_VALIDATION.md, ods/docs/VALIDATION-MATRIX.md, ods/docs/SUPPORT-MATRIX.md, ods/docs/PLATFORM-TRUTH-TABLE.md, ods/scripts/validate*.sh, ods/scripts/release-gate.sh, ods/scripts/simulate-installers.sh, .pre-commit-config.yaml, .gitleaks.toml, and related validation scripts. Claims here should be refreshed when those files change.