Skip to content
Back to skills

Install Dev Harness

BSecurity

Instala o esqueleto de um harness de desenvolvimento com gate de fase (planejamento vs implementação) num projeto novo ou existente — arquivo raiz do agente, config de harness, hooks PreToolUse/SessionStart do Claude Code, e um CLI mínimo de fase. Stack-agnóstico. Use quando o usuário quiser "trazer o harness para este projeto", proteger a fase de planejamento contra escrita prematura de código, ou bloquear comandos destrutivos de git/shell.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
ai-agentspythongoswiftkotlinshellbashnodegit

Works with

  • claude code
  • cli

Security analysis

B85/100
  • highPerforms destructive filesystem operations

Pro scans all 8 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add emilianoeloi/cowboy --skill install-dev-harness --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Install Dev Harness?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Install Dev Harness
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/emilianoeloi-install-dev-harness/badge)](https://www.skillsdirectory.com/skills/emilianoeloi-install-dev-harness)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: install-dev-harness
description: >
  Instala o esqueleto de um harness de desenvolvimento com gate de fase
  (planejamento vs implementação) num projeto novo ou existente — arquivo
  raiz do agente, config de harness, hooks PreToolUse/SessionStart do Claude
  Code, e um CLI mínimo de fase. Stack-agnóstico. Use quando o usuário quiser
  "trazer o harness para este projeto", proteger a fase de planejamento contra
  escrita prematura de código, ou bloquear comandos destrutivos de git/shell.
allowed-tools: Read, Write, Edit, Bash, Glob
license: MIT
metadata:
  author: exported-from-uimaker-adk
  version: "1.0"
---

# Skill — Install Dev Harness

Materializa o esqueleto descrito em `dev-harness-architect` num projeto
concreto: arquivo raiz do agente, `harness.config.json`, três hooks do
Claude Code (`PreToolUse` para escrita, `PreToolUse` para bash,
`SessionStart`) e um CLI mínimo para declarar a fase corrente de uma mudança.

Os hooks são scripts Python stdlib-only — funcionam como guardrail para
qualquer stack do projeto sendo editado (Swift, Kotlin, Python, o que for),
porque rodam como processo externo chamado pelo Claude Code, não como parte
do build do projeto. O único requisito é `python3` disponível na máquina.

## Quando usar isto vs. quando não

Use este skill quando o projeto quer **gate de fase real** (o hook bloqueia
`Write`/`Edit`/`Bash` de verdade durante planejamento). Se o objetivo é só
documentar convenções sem enforcement mecânico, um `CLAUDE.md`/`AGENTS.md`
sozinho já resolve — não instale hooks que o time não vai entender por quê
estão bloqueando.

## Passos

1. **Detecte o stack** do projeto para sugerir defaults sensatos:
   - `pyproject.toml` / `setup.cfg` → Python (`src/`, `tests/`)
   - `package.json` → Node/TS (`src/`, `test/` ou `__tests__/`)
   - `Package.swift` ou `*.xcodeproj`/`*.xcworkspace` → Swift/iOS (nome do
     módulo principal, `Tests/` ou `<Módulo>Tests/`)
   - `build.gradle(.kts)` → Kotlin/Android (`app/src/main/`, `app/src/test/`)
   - Se nada for encontrado, pergunte ao usuário.

2. **Pergunte o que falta** (use AskUserQuestion se a resposta mudar o
   resultado material):
   - Nome do arquivo raiz do agente já em uso (`CLAUDE.md`? `AGENTS.md`?) ou
     se deve criar os dois (arquivo raiz fino + fonte de verdade única —
     veja `dev-harness-architect/reference/harness-model.md#hierarquia-de-instrucoes`).
   - O projeto usa (ou vai usar) OpenSpec para gerenciar mudanças em fases?
     Se sim, o gate de fase `proposal` faz sentido. Se não, pergunte se ainda
     assim quer os hooks de segurança gerais (bloqueio de `git push`,
     `rm -rf`, secrets) sem o gate de fase — nesse caso, omita
     `planning_write_prefixes`/`code_prefixes` do config e os hooks pulam
     essa checagem automaticamente (ausência de fase declarada nunca
     bloqueia).
   - Diretórios de código-fonte e de testes reais do projeto (para preencher
     `code_prefixes`).

3. **Copie os templates** de `templates/` para o projeto alvo, substituindo
   os placeholders:

   | Template | Destino | Placeholders |
   |---|---|---|
   | `templates/harness.config.json.template` | `harness.config.json` (raiz) | `{{RULEBOOK_FILE}}` (string), `{{PLANNING_PREFIXES}}` / `{{CODE_PREFIXES}}` (arrays JSON, ex. `["src/", "tests/"]` — use `[]` se o projeto não quiser gate de fase) |
   | `templates/CLAUDE.md.template` | `CLAUDE.md` (raiz) — só se ainda não existir | `{{RULEBOOK_FILE}}`, `{{QUALITY_GATES}}`, `{{CODE_PREFIXES_HUMAN}}` (frase, ex. "`src/` e `tests/`") |
   | `templates/hooks/pre-tool-write-guard.py` | `scripts/hooks/pre-tool-write-guard.py` | nenhum — lê `harness.config.json` em runtime |
   | `templates/hooks/pre-tool-bash-guard.py` | `scripts/hooks/pre-tool-bash-guard.py` | nenhum |
   | `templates/hooks/session-start.py` | `scripts/hooks/session-start.py` | nenhum |
   | `templates/phase_cli.py` | `scripts/harness/phase_cli.py` | nenhum |

   Não sobrescreva um `CLAUDE.md`/`AGENTS.md` já existente — nesse caso, só
   adicione a seção "Fase da change" a ele, seguindo o mesmo padrão de
   `harness.config.json.template`.

4. **Registre os hooks** em `.claude/settings.json` — faça merge com o que já
   existir, nunca sobrescreva o arquivo inteiro. Conteúdo de referência em
   `templates/settings.hooks.json`.

5. **Verifique**:
   ```bash
   echo '{"source":"new"}' | python3 scripts/hooks/session-start.py
   ```
   Deve imprimir um JSON com `additionalContext` contendo a fase (não
   declarada, na primeira instalação) e a checklist de guias presentes.

6. **Explique o CLI de fase** ao usuário:
   ```bash
   python3 scripts/harness/phase_cli.py set proposal minha-mudanca
   python3 scripts/harness/phase_cli.py show
   python3 scripts/harness/phase_cli.py set apply minha-mudanca
   ```
   Enquanto a fase for `proposal`, os hooks bloqueiam escrita em
   `code_prefixes` e comandos git que mutam o repositório
   (`commit`/`add`/`merge`/`rebase`). Qualquer outra fase (ou fase não
   declarada) libera escrita normalmente — o gate só existe durante
   planejamento.

7. **Relate o que foi instalado**: liste os arquivos criados/modificados, o
   comando de verificação do passo 5, e aponte para
   `architecture-fitness-functions` como próximo passo natural (converter as
   regras do arquivo raiz em testes).

## Contrato entre hook e CLI — não quebre isto

O hook (`scripts/hooks/*.py`) e o CLI (`scripts/harness/phase_cli.py`) leem o
mesmo arquivo (`harness.config.json` → `phase_state_path`, default
`.harness/change-phase.json`) sem compartilhar código — o hook roda num
interpretador isolado e não pode importar nada do projeto. A única garantia
de sincronia é a **igualdade literal** do caminho relativo entre os dois
scripts. Se mudar o `phase_state_path` no config, ambos os scripts já leem do
config, então continuam sincronizados — mas se algum dia hardcodear o caminho
de novo em qualquer um dos dois, quebra o contrato silenciosamente. Não faça
isso.

## Segurança dos hooks — o que eles cobrem por padrão

Independente de fase, os hooks sempre bloqueiam (configurável em
`harness.config.json`):
- Escrita em nomes de arquivo de credencial conhecidos (`.env`,
  `service_account.json`, chaves privadas).
- Escrita que resolve para fora da raiz do repositório (path traversal).
- `git push`, `git reset --hard`, `git clean -f`, `git branch -D`, `rm -rf`.
- Escrita direta em `.env` via redirecionamento de shell (`> .env`,
  `tee .env`).

Isso não substitui revisão humana para `git push` — o hook bloqueia a
execução automática; o agente ainda deve pedir confirmação explícita ao
usuário antes de rodar o comando manualmente fora do hook, conforme a regra
geral de "ações difíceis de reverter" do harness.

Files in this skill

  • SKILL.md6.7 KB
  • templates/CLAUDE.md.template1.3 KB
  • templates/harness.config.json.template2.1 KB
  • templates/hooks/pre-tool-bash-guard.py3.8 KB
  • templates/hooks/pre-tool-write-guard.py5.3 KB
  • templates/hooks/session-start.py3.4 KB
  • templates/phase_cli.py3.2 KB
  • templates/settings.hooks.json980 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.