Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/youssefkadaouiabbassi-ci-hygiene
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
ci-hygiene- Description
- None
- License
- MIT
- Instructions
- 162 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- invalid YAML frontmatter: Unexpected scalar at node end at line 2, column 25:
- name: missing
- description: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
# CI Hygiene — make CI deterministic and safe
Claude Code in CI is a different beast than interactive CC. Different auth, different performance profile, different failure modes. This skill enforces the rules that keep pipelines deterministic, secure, and reproducible.
## When to activate
- Editing `.github/workflows/*.yml`, `.gitlab-ci.yml`, `.circleci/config.yml`, other CI config
- Editing `Dockerfile`, `docker-compose.yml`, `Containerfile`
- Editing `justfile`, deploy scripts, release automation
- User asks: "set up CI", "add GitHub Action", "dockerize", "deploy script"
- Review of changes touching any of the above
## Tool dispatch
| Concern | Tool |
|---|---|
| Check current CI config for anti-patterns | `ast-grep` (structural scan), `Grep` for specific patterns (`@latest`, unpinned tags) |
| Look up current versions of CI actions | `docfork` MCP (needs `DOCFORK_API_KEY`) for tool docs |
| Reference similar OSS CI configs | `deepwiki` MCP |
| Dependency vuln scan of the CI image | `snyk_container_scan` (snyk MCP) if Dockerfile in scope |
| IaC scan for Terraform/K8s/etc. | `snyk_iac_scan` |
| Past CI decisions on this repo | `/claude-mem:mem-search "CI"` |
| Plan a large CI overhaul | `/claude-mem:make-plan` + `/claude-mem:do` |
## The rules (enforced on every edit)
### 1. Claude Code in CI uses `--bare`
Interactive CC has hooks, LSP, plugin sync, CLAUDE.md auto-discovery, auto-memory, and keychain reads. In CI, all of that is overhead or a security hazard. `--bare` disables all of it and sets `CLAUDE_CODE_SIMPLE=1`.
```yaml
# ✅ Correct
- run: claude --bare -p "Review this PR" --system-prompt-file .github/prompts/review.md
# ❌ Wrong
- run: claude -p "Review this PR"
```
### 2. API key for CC in CI, NOT a Max subscription
Since the April 4, 2026 enforcement, using a Max subscription in CI will fail. CI must use a dedicated `ANTHROPIC_API_KEY` (or Bedrock/Vertex/Foundry equivalent) stored in CI secrets.
```yaml
# ✅ Correct
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
# ❌ Wrong — relies on interactive OAuth/keychain
```
### 3. Pin every version
No `@latest`, no `@v*`, no floating tags. Every GitHub Action, every Docker base image, every tool install gets a concrete version (ideally a SHA for Actions, a digest for containers).
```yaml
# ✅ Correct
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# ❌ Wrong
uses: actions/checkout@v4
```
```dockerfile
# ✅ Correct
FROM node:22.14.0-bookworm-slim@sha256:...
# ❌ Wrong
FROM node:latest
```
### 4. `justfile` over raw commands in pipeline yaml
Don't hardcode raw `bun test`, `docker build`, etc. in the workflow yaml. Put the command in `justfile` and have the pipeline call `just <target>`. Keeps the pipeline portable; the developer can run the exact same thing locally.
```yaml
# ✅ Correct
- run: just test-ci
# ❌ Wrong (duplicates intent across local + CI)
- run: bun install --frozen-lockfile && bun test
```
### 5. Secrets only in CI secrets manager
Never in env files, never committed, never echoed in logs. Mask them in `set -x` flows.
### 6. Reproducible builds
Lock files must be committed and CI must install from the lock: `bun install --frozen-lockfile`, `npm ci` (not `npm install`), `cargo build --locked`, `uv sync --frozen`, etc.
### 7. Timeouts on everything
Every CI job gets a `timeout-minutes:` (GitHub Actions) or equivalent. Unbounded jobs are a runaway cost risk and obscure infrastructure issues.
### 8. Sandbox layer for any agentic work
If a CI job lets Claude Code or another agent run commands, wrap the agent in `container-use` (per-agent Docker isolation with git-branch scoping) — do NOT give it raw runner access.
### 9. `claude-mem` in deployed envs binds to 127.0.0.1
If any deployment runs claude-mem, confirm it's bound to 127.0.0.1 — never 0.0.0.0 (port 37777 is the risk). This applies mostly to self-hosted dev-container setups.
### 10. Concurrency controls on expensive workflows
`concurrency: group: ... cancel-in-progress: true` on long-running workflows so a new push cancels the stale one. Prevents pipeline backups.
## Workflow
### Phase 1 — Inventory
Before editing, read the current file(s). Summarize what's there. Note every line that violates a rule above.
### Phase 2 — Classify the change
- **Additive** (new job, new step) → apply rules to the new code only. Don't scope-creep into fixing existing violations.
- **Refactor** (rewriting the CI) → opportunity to fix all violations. Do it in one pass with explicit approval.
- **Fix** (broken CI) → minimum change to unblock. File a follow-up note for the unrelated violations.
### Phase 3 — Apply and verifyFrom youssefKadaouiAbbassi/yka-code, MIT.
More from youssefKadaouiAbbassi/yka-code
- 0.471score
hooks-disable
youssefKadaouiAbbassi
[yka-code] Disable a yka-code hook persistently (state file).
SkillCFreshness: CClaude Code +9 - 0.471score
derive-kind
youssefKadaouiAbbassi
Classify a parcel as pure-fn / io / ui / config / infra to route the right verify gates.
SkillCFreshness: CClaude Code +9 - 0.471score
forge
youssefKadaouiAbbassi
Top-level runbook for /forge:forge.
SkillCFreshness: CClaude Code - 0.471score
pbt-verify
youssefKadaouiAbbassi
Generate property-based tests via fast-check / Hypothesis / proptest, run them, emit VERIFIED / PARTIAL / MISSING with shrunk counterexamples.
SkillCFreshness: CClaude Code - 0.469score
bootstrap
youssefKadaouiAbbassi
Force-run the forge first-time bootstrap.
SkillCFreshness: CClaude Code +9 - 0.469score
browser-verify
youssefKadaouiAbbassi
Drive UI parcels through bundled-Chromium headless Playwright via webapp-testing's with_server.py + ProofShot bundle.
SkillCFreshness: CClaude Code - 0.469score
mutation-gate
youssefKadaouiAbbassi
Per-stack mutation testing — Stryker / mutmut / cargo-mutants — gate score ≥ 0.80.
SkillCFreshness: CClaude Code - 0.464score
update
youssefKadaouiAbbassi
Force a forge update check or toggle the per-session autoupdate prompt.
SkillCFreshness: CClaude Code +9 - 0.464score
stub-warn
youssefKadaouiAbbassi
Reference for the forge-stub-warn hookify rule blocking unimplemented stubs reaching ship.
SkillCFreshness: CClaude Code +9 - 0.402score
Bun
youssefKadaouiAbbassi
Use when building, testing, or deploying JavaScript/TypeScript applications.
SkillDFreshness: DClaude Code +9 - 0.214score
coding-style
youssefKadaouiAbbassi
No description from the publisher yet.
SkillDFreshness: DClaude Code +9 - 0.211score
evals-first
youssefKadaouiAbbassi
No description from the publisher yet.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 20, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from youssefKadaouiAbbassi
- 0.471score
hooks-disable
youssefKadaouiAbbassi
[yka-code] Disable a yka-code hook persistently (state file).
SkillCFreshness: CClaude Code +9 - 0.471score
pbt-verify
youssefKadaouiAbbassi
Generate property-based tests via fast-check / Hypothesis / proptest, run them, emit VERIFIED / PARTIAL / MISSING with shrunk counterexamples.
SkillCFreshness: CClaude Code - 0.471score
derive-kind
youssefKadaouiAbbassi
Classify a parcel as pure-fn / io / ui / config / infra to route the right verify gates.
SkillCFreshness: CClaude Code +9 - 0.471score
forge
youssefKadaouiAbbassi
Top-level runbook for /forge:forge.
SkillCFreshness: CClaude Code - 0.469score
bootstrap
youssefKadaouiAbbassi
Force-run the forge first-time bootstrap.
SkillCFreshness: CClaude Code +9 - 0.469score
mutation-gate
youssefKadaouiAbbassi
Per-stack mutation testing — Stryker / mutmut / cargo-mutants — gate score ≥ 0.80.
SkillCFreshness: CClaude Code
Cite this page
ci-hygiene skill. Agent Mart. https://agentmart.dev/skills/youssefkadaouiabbassi-ci-hygiene (last updated 2026-10-24)