Communitygithub.com

drydock

Coloca la quilla del astillero en cualquier repositorio: el entorno compartido de 4 pilares (Contexto, Reglas, Herramientas, Estándares) en 5 superficies (CLAUDE.md, skills, design-system, mcp/cli, contexto compartido) para que cada humano y agente herede el mismo lenguaje de diseño y cualquiera pueda publicar. Ejecutar una vez por repositorio; re-ejecutar con `--check` para auditar desviaciones.

¿Qué es drydock?

Drydock es una skill para agentes como Claude Code, Cursor o Codex que sienta las bases de un entorno de desarrollo compartido y estandarizado, llamado 'astillero' (shipyard), en cualquier repositorio. Su propósito es garantizar que todos los colaboradores (humanos y agentes) trabajen sobre el mismo lenguaje de diseño, eliminando la ambigüedad y el conocimiento tácito. La skill crea cinco superficies esenciales: un archivo CLAUDE.md como punto de entrada, skills reutilizables en `.omc/skills/`, un sistema de diseño en `design-system/`, herramientas MCP/CLI en `.mcp.json`, y un contexto compartido en `CONTEXT.md` y `docs/`. Además, establece un contrato para resolver el idioma del documento, evitando adivinanzas y garantizando que todos los archivos generados estén en el idioma correcto. Se ejecuta una vez por repositorio inicial, y su opción `--check` permite auditar que el entorno no haya sufrido desviaciones. Drydock es útil para cualquier repositorio donde colaboren humanos y agentes, y donde el conocimiento suele estar en cabezas o chats en lugar de archivos.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace drydock?

Coloca la quilla del astillero: un repositorio, un arnés compartido, cada colaborador lo hereda. Esta skill estructura el entorno que convierte "todos publican" en "todos publican con el mismo lenguaje de diseño" — crea las 5 superficies, las siembra mínimamente, las conecta con los flujos que las llenan (lanzamiento escribe CONTEXT/ADR; el paso de sedimentación C5 del lanzamiento y las revisiones sedimentan estándares), e informa qué existe, qué se creó y qué se deja vacío intencionalmente.

Los cuatro pilares y dónde viven físicamente:

PilarSuperficies
Contexto (antecedentes compartidos)CONTEXT.md (glosario) + docs/business/ + docs/adr/ + wiki OMC
Reglas (límites)CLAUDE.md (entrada delgada: convenciones, principios, índice) + docs/standards/
Herramientas (capacidad componible).omc/skills/ + .mcp.json + scripts/
Estándares (la sociedad de clasificación)design-system/ (tokens, componentes, patrones) + docs/standards/

Mapa de metáforas: el astillero es la instalación compartida; la sociedad de clasificación (docs/standards/ + design-system/) establece las reglas que un barco debe cumplir para ser navegable; drydock coloca la quilla; lanzamiento lo envía.

Cuándo Usar

  • comenzando un repositorio en el que humanos y agentes construirán
  • un repositorio donde el conocimiento vive en cabezas y en el historial de chat en lugar de archivos
  • incorporación: un nuevo miembro del equipo o agente debería heredar contexto leyendo, no preguntando

Cuándo No Usar

  • prototipos desechables sin colaboradores
  • un repositorio que ya ejecuta este arnés (usar --check en su lugar)

Flujo de Trabajo

1. Detectar (nunca sobrescribir)

Inventariar qué existe antes de escribir cualquier cosa:

  • ¿CLAUDE.md presente? ¿AGENTS.md presente? (regla: si alguno existe, extenderlo en su lugar; crear el faltante como un puntero de una línea al otro; nunca crear ambos desde cero)
  • CONTEXT.md, docs/adr/, docs/standards/, docs/business/, design-system/, .omc/skills/, .mcp.json, scripts/, .gitattributes — ¿cuáles existen, cuáles faltan?
  • ¿OMC instalado? — solo vale la pena comprobarlo al ejecutar dentro de una sesión OMC; fuera de ella, omitir esta comprobación silenciosamente (el arnés funciona con o sin OMC)

Informar primero el mapa, luego actuar.

2. Resolver el idioma del documento, luego preguntar solo lo que la detección no puede responder

El idioma del documento para los archivos del arnés generado es una decisión respaldada por archivos, no un estado de conversación. Usar este contrato exactamente:

{
  "schemaVersion": 1,
  "authority": { "path": "CONTEXT.md", "frontmatterKey": "documentLanguage" },
  "canonicalSources": ["CLAUDE.md", "README.md"],
  "askOn": ["missing", "mixed", "conflict", "low-confidence", "invalid-explicit", "script-ambiguous"],
  "tagPattern": "^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?$",
  "scriptVariants": ["zh-Hans", "zh-Hant"],
  "seedCompanionPrefixes": { "en": "en", "zh-Hans": "zh-Hans", "zh-Hant": "zh-Hant" },
  "stableTokens": [
    "CONTEXT.md", "documentLanguage", "/oh-my-claudecode:launch", "--serial",
    "plan", "execute", "review", "verify", "blockedBy", "blocked_by",
    "pending", "in_progress", "completed", "failed", "ready-for-agent",
    "id", "name", "description", "triggers", "mcpServers", "```",
    "<Project>", "<term>", "<feature-slug>"
  ]
}

Orden de resolución:

  1. Una elección humana explícita en la invocación actual prevalece cuando es válida. Normalizarla a una etiqueta BCP-47 estable: minúsculas para el idioma, Title-Case para el script, mayúsculas para la región. Una entrada explícita no válida debe ser preguntada una vez en lugar de adivinada.
  2. De lo contrario, leer documentLanguage del frontmatter YAML al inicio de CONTEXT.md. Una etiqueta válida y sin ambigüedad de script es autoritativa para invocaciones nuevas de Drydock y Launch. Si la etiqueta persistida es china simple o solo región, preguntar una vez en este nivel de autoridad; nunca omitirlo con inferencia de fuentes.
  3. Si el marcador está ausente o no es válido, inspeccionar las fuentes canónicas en este orden: CLAUDE.md, luego README.md. Inferir solo cuando cada fuente utilizable tenga un idioma dominante inequívoco y todas las fuentes utilizables coincidan en la misma etiqueta normalizada. Una fuente inequívoca es suficiente cuando la otra falta o está vacía.
  4. El chino debe resolverse a una etiqueta explícita con script: zh-Hans o zh-Hant (opcionalmente seguido de una región). zh simple y etiquetas chinas solo con región son ambiguas en el script y deben ser preguntadas una vez en lugar de seleccionar un acompañante. La selección del acompañante usa el prefijo de idioma/script más largo: zh-Hans-* selecciona el acompañante zh-Hans y zh-Hant-* selecciona zh-Hant; preservar la etiqueta normalizada completa (por ejemplo zh-Hans-CN) en CONTEXT.md.
  5. Fuentes utilizables faltantes, contenido mixto de idiomas, etiquetas en conflicto, inferencia de baja confianza, entrada explícita no válida o chino ambiguo en script deben desencadenar una pregunta de idioma agrupada. No adivinar. Si no hay respuesta disponible, detenerse antes de escribir artefactos localizados.
  6. Antes del andamiaje, escribir la etiqueta resuelta en la clave de frontmatter estable documentLanguage en CONTEXT.md (creando o extendiendo su frontmatter sin traducir la clave). Este archivo visible es la autoridad de idioma del informe de inicio; no se crea ningún daemon, libro mayor oculto o estado de ejecución.

Solo la prosa, las etiquetas orientadas a humanos y los valores localizables siguen el idioma seleccionado; las claves estructurales permanecen estables en el idioma. Las rutas, comandos de barra, banderas, bloques de código, marcadores de posición, claves de frontmatter y valores semánticos de máquina, claves YAML/JSON, tokens de ciclo de vida, enumeraciones de estado, IDs, blockedBy, blocked_by del equipo público, y tokens de analizador/control se mantienen estables byte a byte.

Preguntar las preguntas restantes solo después de que el idioma esté resuelto:

  • pila de paquetes/tecnología (para estándares y semillas del sistema de diseño)
  • ¿este repositorio tiene una UI? (sin UI → design-system/ se crea como un stub con una nota, o se omite si se solicita)
  • ubicación del rastreador de problemas (GitHub / GitLab / .scratch/ local) — para la admisión V1 del puerto solo se admite GitHub; también registrar la autoridad de comunicación del mantenedor para la admisión (comentarios de problemas, cambios de etiqueta) — consumido por el mapa de inicio del navegador y la cola de admisión del puerto

3. Andamiar (crear superficies faltantes — las semillas se renderizan en el idioma del documento)

CLAUDE.md                      # entrada delgada — ver semilla A
CONTEXT.md                     # glosario — ver semilla B
.gitattributes                 # * text=auto eol=lf  (elimina el ruido de advertencia CRLF en Windows)
docs/adr/0001-adopt-shipyard-harness.md
docs/standards/architecture.md # semilla C
docs/standards/data.md
docs/standards/process.md
docs/business/README.md        # semilla D
design-system/README.md        # semilla E (solo repositorios con UI; stub en caso contrario)
design-system/tokens/README.md
.omc/skills/README.md          # semilla F
.mcp.json                      # {"mcpServers": {}}
scripts/README.md

Los ejemplares de semilla son acompañantes de referencia, nunca una carga útil combinada. Seleccionar exactamente un acompañante después de resolver documentLanguage; no emitir encabezados o etiquetas duplicados de otro acompañante. Usar el prefijo de idioma/script coincidente más largo: en-* usa inglés, zh-Hans-* usa chino simplificado, y zh-Hant-* usa chino tradicional, mientras que la Semilla B escribe la etiqueta completa resuelta en documentLanguage. Para cualquier otra etiqueta válida, traducir el acompañante canónico en inglés una vez, preservando cada token estable anterior.

Antes de generar prosa de semilla, llamar a la herramienta Skill con agent-doc-discipline y aplicar sus reglas; la prosa de semilla está lista solo cuando cada regla es comprobable y lleva un "por qué", cada superficie se autodescribe sin historial de chat, y las fuentes se nombran en lugar de asumirse. Un compañero de equipo o agente debería poder actuar sobre el contenido de la semilla con solo leerlo.

Semilla A — CLAUDE.md, en (entrada delgada; extender en su lugar si el archivo existe):

# <Project> — Agent & Human Shipyard

## Project conventions
- <language/framework/package manager/naming — list what matters, skip the rest>

## Architecture principles
- <the 3-5 principles most often violated in this project>

## Standards index (full text in docs/standards/)
- Architecture: docs/standards/architecture.md
- Data: docs/standards/data.md
- Process: docs/standards/process.md

## Decision records (full text in docs/adr/; load-bearing ones listed here)
- ADR-0001: adopt shipyard harness

## Shared background
- Glossary: CONTEXT.md | Business knowledge: docs/business/ | Decision context: docs/adr/

## Agent guide
- Delivery follows the canonical workflow plan → execute → review → verify; `/oh-my-claudecode:launch` is an optional governed delivery pipeline (opt-in, invoke explicitly)
- On term conflicts CONTEXT.md wins; new terms are recorded the moment they settle
- Reusable capability goes to .omc/skills/; UI patterns go to design-system/

Semilla A — compañero zh-Hans (estructura idéntica, elegir uno según el idioma del documento):

# <Project> — Agent & Human Shipyard

## 项目约定
- <language/framework/package manager/naming — list what matters, skip the rest>

## 架构原则
- <the 3-5 principles most often violated in this project>

## 规范索引(全文在 docs/standards/)
- 架构规范: docs/standards/architecture.md
- 数据规范: docs/standards/data.md
- 流程规范: docs/standards/process.md

## 决策记录(全文在 docs/adr/,此处只列 load-bearing 的)
- ADR-0001: adopt shipyard harness

## 共享背景
- 术语: CONTEXT.md | 业务知识: docs/business/ | 决策背景: docs/adr/

## Agent 指南
- 交付遵循 canonical 工作流 plan → execute → review → verify;`/oh-my-claudecode:launch` 是可选的受治理交付管道(opt-in,需要时显式调用)
- 术语冲突以 CONTEXT.md 为准;新术语当场补录
- 可复用能力沉淀到 .omc/skills/;UI 模式沉淀到 design-system/

Semilla A — compañero zh-Hant (estructura idéntica, renderizar solo esta versión):

# <Project> — Agent & Human Shipyard

## 專案約定
- <language/framework/package manager/naming — list what matters, skip the rest>

## 架構原則
- <the 3-5 principles most often violated in this project>

## 規範索引(全文在 docs/standards/)
- 架構規範: docs/standards/architecture.md
- 資料規範: docs/standards/data.md
- 流程規範: docs/standards/process.md

## 決策記錄(全文在 docs/adr/,此處只列 load-bearing 項目)
- ADR-0001: adopt shipyard harness

## 共享背景
- 詞彙: CONTEXT.md | 業務知識: docs/business/ | 決策背景: docs/adr/

## Agent 指南
- 交付遵循 canonical 工作流 plan → execute → review → verify;`/oh-my-claudecode:launch` 是可選的治理交付管道(opt-in,必須明確呼叫)
- 術語衝突以 CONTEXT.md 為準;新術語確定時立即補錄
- 可重用能力沉澱到 .omc/skills/;UI 模式沉澱到 design-system/

Semilla B — CONTEXT.md (la clave de frontmatter estable es la autoridad del idioma):

en:

---
documentLanguage: en
---

# Glossary

One entry per term: definition, boundaries, one resolved ambiguity. Agents write here the moment a term is settled. Vocabulary here is law for all specs, tickets, and code naming.

## <term>
- Definition:
- Boundary: (is X, not Y)
- Resolved ambiguity:

zh-Hans:

---
documentLanguage: zh-Hans
---

# 术语表

一条术语一个条目:定义、边界、一个已解决的歧义。术语敲定的当下写入。词汇对所有 spec、ticket、代码命名具有法律效力。

## <term>
- 定义:
- 边界: (是 X,不是 Y)
- 已解决的歧义:

zh-Hant:

---
documentLanguage: zh-Hant
---

# 詞彙表

每個術語一個條目:定義、邊界、一個已解決的歧義。術語確定時立即寫入。這裡的詞彙是所有 spec、ticket 與程式碼命名的準則。

## <term>
- 定義:
- 邊界: (是 X,不是 Y)
- 已解決的歧義:

Semilla C — docs/standards/architecture.md (data.md / process.md misma forma; la prosa se renderiza en el idioma del documento):

# Architecture Standards

Rule-shaped, checkable writing; every rule carries a "why". Empty sections are legal — sediment is gradual.

## Module boundaries
## Error handling
## Dependency direction

Semilla D — docs/business/README.md:

# Business Knowledge

Decision background and business rules. Format suggestion: one article answers one business question, opening paragraph states why it matters.
A new teammate (human or agent) reading this directory should be able to answer "why does this product direction exist".

Semilla E — design-system/README.md:

# Design System

## tokens/    Design tokens (colors/type/spacing, machine-readable JSON preferred)
## components/ Component contracts (purpose, variants, misuse)
## patterns/  Interaction patterns (forms, feedback, loading, empty states — sediment reused patterns)

Semilla F — .omc/skills/README.md:

# Project Skills

Reusable capabilities sedimented by this project: specialized tools, prompt templates, specialized practices.
One skill per file `.omc/skills/<name>.md`, frontmatter must contain a stable ASCII `id` plus name + description +
**non-empty triggers** (loader validation hard requirement: missing or empty means the skill is never loaded):

```markdown
---
id: project-release-check
name: project-release-check
description: Apply this repository's release readiness rules
triggers:
  - "project release check"
---

# Project Release Check

Follow the repository-specific release checklist and report evidence.
```
The literal YAML keys `id`, `name`, `description`, and `triggers` never localize. `id` and other machine-semantic values stay ASCII and stable; the scalar display values for `name`, `description`, and `triggers`, plus Markdown headings and prose, may localize. A non-Latin display name remains loadable because the explicit ASCII `id` is stable.
Bar for admission matches skillify: if it can be Googled in 5 minutes it is not a skill;
write "this project's specific decision discipline", not generic tutorials.

Semilla .mcp.json: {"mcpServers": {}} — los servidores se agregan cuando una integración de herramienta es realmente necesaria, no de forma especulativa.

4. Conectar el bucle de gobernanza (esto es lo que lo convierte en un astillero, no en una carpeta)

Decir al usuario, y confiar en estos flujos para llenar el esqueleto:

  • lanzamiento escribe vocabulario CONTEXT.md, ADR y docs/business/ a medida que las decisiones se asientan (rastro documental)
  • lanzamiento C5 sedimento / code-review sedimenta...

…[truncado para traducción]

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

omc-doctor

Diagnose and fix oh-my-claudecode installation issues

Skills relacionados