ci-update
Detect + selectively apply drift between installed CI templates and current dev-kit source.
Skill by sh-ai-x
Chalk Labs
Need help deploying ci-update?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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/sh-ai-x-ci-update
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
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ci-update
Tools it pre-approves 5
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
ReadWriteGlobBashAskUserQuestion
What's inside
- Skill name
ci-update- Description
- Detect + selectively apply drift between installed CI templates and current dev-kit source. 4-state per-file classification with backup-before-overwrite.
- License
- MIT
- Allowed tools
- Read, Write, Glob, Bash, AskUserQuestion
- Instructions
- 166 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves any shell command
Files (1)
- SKILL.md
SKILL.md (first lines)
> [← Skills index](../../README.md)
# /dev-kit:ci-update — Refresh CI Templates
## Iron Law
**Read-only by default. Backup-before-overwrite on every write. Never touches files outside `EXPECTED_PATHS`.** Closes the dev-kit ⇄ consumer gap: a consumer who ran `/dev-kit:ci-setup` at dev-kit v0.3.200 has no way to see "v0.3.287 shipped new templates" — the marker is content-only until this skill reads its `installed_dev_kit_version` + `template_shas` fields. The same drift classifier powers `ci-doctor`'s `templates current` check, so an audit before refresh is cheap.
## What it does
Reads the consumer marker `.dev-kit/ci-config.json`, classifies every `EXPECTED_PATHS` entry into one of four drift states, and offers a safe apply path:
| State | Meaning | Action on `--apply` |
|---|---|---|
| `new` | In dev-kit's `EXPECTED_PATHS` but not installed | write from source |
| `updated` | Dev-kit changed since install, consumer unchanged | write from source |
| `consumer_modified` | Consumer edited their copy, dev-kit unchanged | prompt / skip |
| `diverged` | Both sides changed | prompt / skip |
`--force` overwrites consumer-modified + diverged files too, with a `<rel>.bak` written first when `backup=True` (the default).
## Usage
```bash
/dev-kit:ci-update [--apply] [--force] [--no-backup] [--target DIR] [--provider NAME]
```
| Flag | Effect |
|---|---|
| *(0-arg)* | Dry-run diff + table. No writes. |
| `--apply` | Write `new` + `updated`. Prompt on `consumer_modified` + `diverged`. |
| `--force` | Overwrite all four states. No prompts. |
| `--no-backup` | Skip `.bak` creation (explicit user choice; NOT recommended). |
| `--target DIR` | Cross-repo apply. Hidden flag. |
| `--provider NAME` | Override CI review provider for lint pass. Hidden flag. |
Failure exit codes: `1` = arg error, `2` = marker missing, `3` = source unreadable, `4` = apply error.
## 3-Phase Orchestration
### Phase 1 — Detect
1.1. Parse arguments (`--target`, `--apply`, `--force`, `--no-backup`).
1.2. Resolve the consumer marker via `_resolve_prior_marker(target)`.
1.3. If `installed_dev_kit_version` is missing or `"unknown"`:
- Emit a WARN: "marker predates schema; run `/dev-kit:ci-setup` first to backfill"
- Refuse to compute state classification; exit 2
- The consumer's marker was written before this skill existed; the
backfill happens automatically on the next `/dev-kit:ci-setup`
call (no-op idempotent re-install path).
1.4. Resolve `plugin_root` from `${CLAUDE_PLUGIN_ROOT}` (preferred) or
`lib/ci_setup._PLUGIN_ROOT` (fallback when invoked in the source
repo). The skill body always passes `plugin_root` explicitly into
`diff_ci_install` / `apply_ci_update`.
### Phase 2 — Diff
```bash
python3 -c "
from pathlib import Path
import sys
sys.path.insert(0, 'lib')
from ci_update import diff_ci_install
report = diff_ci_install(Path('${TARGET_DIR}'), plugin_root=Path('${PLUGIN_ROOT}'))
print(f'new={len(report.new)} updated={len(report.updated)} unchanged={len(report.unchanged)} consumer_modified={len(report.consumer_modified)} diverged={len(report.diverged)}')
"
```
2.1. Render a 4-column table:
```
| Path | State | Backup | Action |
|------|-------|--------|--------|
| scripts/validate.py | updated | n/a | write from source |
| .github/workflows/review.yml | consumer_modified | .bak | prompt |
| .gitignore | (skipped — merge target) | n/a | run ci-setup --force to re-merge |
```
2.2. If all four lists are empty → PASS; the consumer is fully current.
2.3. Emit a one-line summary: `installed=v0.3.287; new=2 updated=5 consumer_modified=1 diverged=0`.
### Phase 3 — Apply
On `--apply` (or `--force`):
3.1. If `mode='apply'` AND there are `consumer_modified` or `diverged`
files → AskUserQuestion, one prompt per file:
- "Overwrite `.github/workflows/review.yml` (you edited it locally)?
Backup will be written to `.bak`. [Overwrite / Skip / Cancel]"
- Default: Skip. User must explicitly opt in to each overwrite.
3.2. For each approved file: `shutil.copy2(target, target + ".bak")`
first (only when bytes differ from source); then copy from dev-kit
source via `_resolve_template_source(rel)`.
3.3. After apply, rewrite the marker with:
- `installed_dev_kit_version`: fresh `plugin_version(plugin_root)`
- `template_shas`: fresh `_compute_template_shas(plugin_root)`
- `installed_file_shas`: re-hashed consumer copies
- `installed_by`: `"dev-kit:ci-update"` (so audit trails distinguish
initial install from refresh)
- `installed_at`: PRESERVED (do not bump; refresh is not a re-install)
3.4. Print the summary table again post-apply, with a `Backed up: N`
line and the new `installed_dev_kit_version`.
### Phase 4 — Hand-off
After a successful apply:
- Recommend `/dev-kit:ci-doctor` to confirm the broader CI readiness
(secrets, gh auth, branch protection).
- Recommend committing the updated templates + the refreshed marker
in one PR. The commit message should follow Conventional Commits:
`chore(ci): refresh dev-kit templates to v0.3.287`.
## Files NOT touched
- **`.gitignore`**: skip in the diff and skip in apply. The install path
for `.gitignore` is a marked-block merge (see
`lib/ci_setup.py:_install_gitignore_fragment`); it does not match
`shutil.copy2` semantics. Consumers who want the marker block
refreshed should run `ci-setup --force` — that path preservesFrom sh-ai-x/dev-harness-kit, MIT.
More from sh-ai-x/dev-harness-kit
- 0.587score
harness-effectiveness
sh-ai-x
0-arg harness-effectiveness report.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
babysit-pr-local
sh-ai-x
0-arg local-mode PR babysitter.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
harness-mode
sh-ai-x
Session-scoped local-hook mode picker — fast (all optional local hooks off), full (default, all on), or custom (interactive per-local-hook picker via…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
gate-select
sh-ai-x
Unified 3-dimension picker for project / session / AI-judge gates.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
bootstrap
sh-ai-x
0-arg setup for CLAUDE.md, AGENTS.md, hooks, and optional CI.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
guard-mode
sh-ai-x
Session-scoped on/off toggle for the tdd-guard, worktree-guard, and git-guard hard-block hooks.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
babysit-pr
sh-ai-x
0-arg restart-safe PR check, diagnose, fix, and hand-off loop.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
build
sh-ai-x
0-arg.
SkillAFreshness: A★ 1Claude Code - 0.552score
codex-cache-update
sh-ai-x
Refresh the dev-kit Codex marketplace checkout and synchronize the versioned plugin cache.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
bump
sh-ai-x
Explicit version bump of `.claude-plugin/plugin.json` + push of `chore/bump-vX.Y.Z`.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
evaluate
sh-ai-x
0-arg eval extension.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
ci-triage
sh-ai-x
Triage failing GitHub Actions runs across recent commits, dedupe against a persisted case store, judge new failures against a model/context/harness taxonomy…
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 2
- Open issues
- 8
- Last commit (this folder)
- Aug 20, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/sh-ai-x/dev-harness-kit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sh-ai-x
- 0.587score
harness-effectiveness
sh-ai-x
0-arg harness-effectiveness report.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
harness-mode
sh-ai-x
Session-scoped local-hook mode picker — fast (all optional local hooks off), full (default, all on), or custom (interactive per-local-hook picker via…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
babysit-pr-local
sh-ai-x
0-arg local-mode PR babysitter.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
gate-select
sh-ai-x
Unified 3-dimension picker for project / session / AI-judge gates.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
guard-mode
sh-ai-x
Session-scoped on/off toggle for the tdd-guard, worktree-guard, and git-guard hard-block hooks.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
bootstrap
sh-ai-x
0-arg setup for CLAUDE.md, AGENTS.md, hooks, and optional CI.
SkillAFreshness: A★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get ci-update running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
ci-update skill. Agent Mart. https://agentmart.dev/skills/sh-ai-x-ci-update (last updated 2026-10-24)