Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zakariaf/Flutter-Skills --skill ci-pipeline-and-gatesgit clone --depth 1 https://github.com/zakariaf/Flutter-SkillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zakariaf/flutter-skills/ci-pipeline-and-gates)<a href="https://agentmods.dev/skills/zakariaf/flutter-skills/ci-pipeline-and-gates"><img src="https://agentmods.dev/badge/skills/zakariaf/flutter-skills/ci-pipeline-and-gates/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zakariaf/flutter-skills/ci-pipeline-and-gates"><img src="https://agentmods.dev/badge/skills/zakariaf/flutter-skills/ci-pipeline-and-gates.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00210 | $0.03865 |
| Opus 5 | $0.00105 | $0.01932 |
| Sonnet 5 | $0.00042 | $0.00773 |
| Haiku 4.5 | $0.00021 | $0.00386 |
Grade A, and why
ci-pipeline-and-gates scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 205 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CI Pipeline & Gates
A CI gate is not a decorative green check — it converts one release-blocking contract into a check a build either passes or fails, without trusting a human. Keep the pipeline lean: one workflow file for most single-package apps, every job pinned, every gate traceable to a named contract, and an honest note wherever CI cannot prove the thing that actually matters.
Read the reference for the task at hand:
references/workflow-skeleton.md— the copy-paste single-fileci.yml: pinned runner + toolchain, freshness gates, format/analyze, randomized tests, host-sqlite, coverage-strip, and the release-build job.references/policy-grep-gate.md— the grep-based invariant gate: the three-criteria bar, strip-comments-first, anchor-to-structure, accumulate-and-fail-once, write-the-reason-for-a-stranger.
Run scripts/ci-gates.sh and scripts/banned-strings.sh before a PR to reproduce the static gates locally.
Non-negotiable rules
- Every gate maps to exactly one named contract — name it. A check that serves no stated contract is not a gate: make it advisory and say so, or don't add it. Never invent a merge-blocker with nothing behind it. This keeps the pipeline auditable and stops gate-sprawl.
- Pin the runner AND the toolchain on every job.
runs-on: ubuntu-24.04(never-latest— image drift moves lcov/toolchain versions with no diff to review) andsubosito/flutter-action@v2with an explicitflutter-versionorflutter-version-file,channel: stable. A floating SDK silently re-renders goldens and perturbs determinism. Bump the version only in a dedicated PR. - Mark unverified action versions inline; never invent a major. A wrong major silently fails or silently changes behaviour. Write
# VERIFY:next to a version you haven't confirmed rather than guessing@v7. - Format and analyze are hard gates.
dart format --output=none --set-exit-if-changed .andflutter analyze --fatal-infos.--fatal-infosis load-bearing: an info left unfixed is a warning that gets ignored next. Seelint-and-style-config. - Codegen and schema are freshness gates, not build steps. Run the generator, then
git diff --exit-codethe outputs; a nonzero diff fails with a message telling the author to regenerate and commit. This is the entire mitigation for committing generated code, and the one gate that catches "changed the schema, forgot to migrate". Seerun-codegen,run-migration. - Randomize test ordering; provision native deps the test host needs.
flutter test --test-randomize-ordering-seed randomis free detection of inter-test state leakage. On Linux,flutter testruns in a plain Dart VM wheresqlite3_flutter_libsdoes nothing — install hostsqlite3before a suite that opens a real DB, or it fails for a reason that looks like a broken repo. - Static greps catch what runtime can't — held to the three-criteria bar. A grep-based gate is legitimate only when the invariant is textually decidable, silent when broken, and one line to break (
references/policy-grep-gate.md). It proves properties of the source graph a passing test never can (an import that isn't reached at runtime, a manifest attribute). Two out of three criteria means code review, not a grep. - Coverage is a published report, never a gate. No percentage threshold, no paid service. A covered line that asserts nothing is worthless. First fix the upward lie:
flutter test --coverageomits files no test imports, so an untested file scores zero denominator lines, not 0% — one tested file can report ~100%. Include untested files, then strip generated code fromlcov.info. Seetesting-strategy. - Gates verify, they never bless or mutate the repo. No
--update-goldens, nodart format --fix, no committing regenerated code from CI — a gate that fixes the thing it checks asserts nothing. Regeneration is a local, human-reviewed act. Goldens run on the pinned runner and CI only compares. Seewidget-golden-and-a11y-testing. - A red gate blocks; be honest about the limits. Never
continue-on-error: trueon a gate, never merge on a skipped gate, never// ignore:a static finding. And state plainly what CI cannot prove — audio output, real-font rendering, true on-device behaviour — so the manual on-device pass is treated as a load-bearing release artifact, not a chore.
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 205 lines · 210 tokens per session scan A 86e43866a63c
ci-pipeline-and-gates is a skill published in the GitHub repository zakariaf/Flutter-Skills (2 stars, last pushed 13d ago), licensed MIT. It adds 210 tokens to every session and 3,865 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
ci-all
Full CI pipeline: run local tests, type check, push branch, and return the pipeline URL. The only command you need before opening a PR.
source-command-fix-ci
Migrated source command fix-ci.
dsh-ci-test-reliability
Design, review, and diagnose DeepSeek Harness tests and fixtures that can fail nondeterministically under CI concurrency, shared host resources, clocks, process-global state, subprocesses, network listeners, or asynchronous teardown. Use when adding or changing tests with those risks, investigating flaky CI, or…
playwright-ci
Production-ready CI/CD configurations for Playwright — GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins, Docker, parallel sharding, reporting, code coverage, and global setup/teardown.
Verification & Quality Assurance
Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.
cw-gates
Use before claiming any Codewhale change is done, green, or ready to land: the focused-to-broad verification ladder, the budget checks CI enforces, and the rules for what counts as a passing test.