From harness-skill
Configura un "harness" de gobernanza para agentes de IA en el proyecto del usuario: git hooks que bloquean push directo a main, commit de .env y secretos, y reescritura de historia; más una capa de contexto (reglas + estado) que el agente lee. Agnóstico a la herramienta y human-in-the-loop: investiga el proyecto, pregunta y adapta sin asumir nada. CREA los archivos necesarios (los hooks viven en el repo porque git los ejecuta desde ahí). Trigger: cuando el usuario quiere instalar, configurar o adaptar el harness; proteger su repo de acciones no deseadas (de agentes o humanos) como push a main, .env o secretos; o dice "configura el harness", "instala el harness", "agrega guardarraíles", "set up the harness".
How this skill is triggered — by the user, by Claude, or both
Slash command
/harness-skill:harness-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Este archivo es un playbook agnóstico.** Su cuerpo funciona en cualquier
assets/ci/pull_request_template.mdassets/ci/validate.ymlassets/context/AGENTS.md.templateassets/context/CLAUDE.md.templateassets/context/opencode/opencode.jsonassets/context/opencode/plugins/rules-enforcer.tsassets/docs/AGENTS_WORKFLOW.mdassets/docs/harnesses.mdassets/githooks/pre-commitassets/githooks/pre-pushassets/openspec/DECISIONS.mdassets/openspec/RISKS.mdassets/openspec/ROADMAP.mdassets/openspec/STATUS.mdassets/openspec/adr/0000-template.mdassets/rules/OPERATING_RULES.mdassets/scripts/doctor.shassets/scripts/validate.shassets/setup.shEste archivo es un playbook agnóstico. Su cuerpo funciona en cualquier agente (Claude Code, Cursor, opencode, Gemini, Codex). El frontmatter de arriba solo lo aprovecha Claude Code para auto-activarse; los demás agentes ejecutan los pasos de abajo. Para activarlo nativamente en cada herramienta, ver
integrations/en el repositorio.
main,
commit de .env/secretos, force push) sin depender de que el agente recuerde las reglas..githooks/). Genera solo lo
mínimo adaptado al proyecto. No pises lo existente.Los templates viven junto a este archivo, en assets/:
assets/githooks/, assets/rules/, assets/context/, assets/openspec/,
assets/docs/, assets/scripts/, assets/ci/. Si tu agente no tiene acceso a
esta carpeta, pídele al usuario la ruta donde clonó el repo harness-skill.
git rev-parse --is-inside-work-tree # ¿es repo git? si no, ofrece git init
git branch -a; git symbolic-ref --short HEAD # ramas: main/master/develop, actual
git log --oneline -1 # ¿nuevo (sin commits) o existente?
ls package.json go.mod pyproject.toml Cargo.toml pom.xml 2>/dev/null # stack
ls CLAUDE.md AGENTS.md .cursor .opencode GEMINI.md 2>/dev/null # agentes presentes
Resume al usuario lo detectado en 3-4 líneas. No avances sin mostrarlo.
gitflow (feature→develop→main),
trunk-based (ramas cortas→PR→main) o simple (sin bloqueo).<X>).BLOCK_MODE = always / if-develop / off.assets/rules/OPERATING_RULES.md; que elija/agregue.openspec/ (STATUS, DECISIONS, ROADMAP, RISKS)? Sí/No.Lee los templates de assets/ y genera en el repo del usuario, adaptados:
.githooks/pre-push ← assets/githooks/pre-push, ajustando la sección CONFIG
(PROTECTED_BRANCH, BLOCK_MODE) según respuestas 2 y 3..githooks/pre-commit ← assets/githooks/pre-commit (aplica a todos los flujos).rules/OPERATING_RULES.md ← solo las reglas elegidas, con las palabras del usuario.assets/context/*.template.
Si ya existe, NO lo pises: agrégale la línea que referencia las reglas
(@rules/OPERATING_RULES.md o equivalente).openspec/: copia assets/openspec/ adaptando STATUS.md.Muestra la lista de archivos a crear/modificar y pide confirmación antes de escribir.
chmod +x .githooks/pre-commit .githooks/pre-push
git config core.hooksPath .githooks
printf 'SECRET=abc123real' > .env && git add -f .env && git commit -m test
# (debe ser BLOQUEADO por pre-commit) → luego limpia:
git reset -q HEAD .env 2>/dev/null; rm -f .env
Resume qué quedó y qué le toca al usuario: afinar rules/OPERATING_RULES.md,
reiniciar su agente para cargar el contexto, y las salidas de emergencia:
ALLOW_MAIN=1, ALLOW_FORCE=1, git commit --no-verify.
git config core.hooksPath .githooks && chmod +x .githooks/* # activar hooks
# pre-push CONFIG: PROTECTED_BRANCH="main" BLOCK_MODE="always|if-develop|off"
ALLOW_MAIN=1 git push ... # override: push directo puntual
ALLOW_FORCE=1 git push --force # override: force push a rama crítica
git commit --no-verify # override: saltar pre-commit
assets/setup.sh.assets/docs/harnesses.md.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub eliascando/harness-skill --plugin harness-skill