AI Bom
cdxgen/cdxgen
Generates AI-BOM, MCP inventory, AI skill inventory, and AI authorship provenance documents with cdxgen, cataloging models, inference services, Hugging Face purls, MCP servers and their…
Sets up a shared repo environment for people and agents: CLAUDE.md, a CONTEXT.md glossary, ADRs, standards and a design-system folder, and audits drift with --check.
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydock --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/drydock .claude/skills/drydock && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .claude/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydockType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydock --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/drydock .agents/skills/drydock && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .agents/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydock --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/drydock .cursor/skills/drydock && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .cursor/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Yeachan-Heo/oh-my-claudecode.git --path skills/drydock--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydock --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/drydock .gemini/skills/drydock && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .gemini/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydockInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/drydock .github/skills/drydock && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .github/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Yeachan-Heo/oh-my-claudecode drydock --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/drydock .opencode/skills/drydock && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "drydock" agent skill from https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/drydock into .opencode/skills/drydock/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "drydock", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
drydockSets up a shared repo environment for people and agents: CLAUDE.md, a CONTEXT.md glossary, ADRs, standards and a design-system folder, and audits drift with --check.
Drydock scaffolds a shared harness in a repository, built on four pillars and five surfaces. Context lives in `CONTEXT.md`, `docs/business/` and `docs/adr/`; rules in a thin `CLAUDE.md` plus `docs/standards/`; tools in `.omc/skills/`, `.mcp.json` and `scripts/`; and standards in `design-system/` for tokens, components and patterns. The aim is that every human and agent who joins inherits the same background and design language.
It first inventories what already exists and reports a map before writing anything. If `CLAUDE.md` or `AGENTS.md` is present it extends that file in place and makes the other a one-line pointer, and it never creates both from scratch. Next it settles the document language, stored in the `documentLanguage` key of the `CONTEXT.md` frontmatter, and asks only what detection cannot answer. The closing report says what exists, what was created and what stays empty on purpose. Run it once per repository and re-run with `--check` to audit drift; the excerpt ends partway through the language step.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 454bae0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Drydock Repo Harness Setup loads about 5.2k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 1,610 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Yeachan-Heo/oh-my-claudecode at commit 454bae0, republished under its MIT licence (© Yeachan-Heo). 1,610 words, ~5,247 tokens.
.claude/skills/drydock/SKILL.md (or your agent's skills folder).Lay the keel of the shipyard: one repo, one shared harness, every contributor inherits it. This skill scaffolds the environment that turns "everyone ships" into "everyone ships on the same design language" — it creates the 5 surfaces, seeds them minimally, wires them to the flows that fill them (launch writes CONTEXT/ADR; the launch C5 sediment pass and reviews sediment standards), and reports what exists, what was created, and what stays empty on purpose.
The four pillars and where they physically live:
| Pillar | Surfaces |
|---|---|
| Context (shared background) | CONTEXT.md (glossary) + docs/business/ + docs/adr/ + OMC wiki |
| Rules (boundaries) | CLAUDE.md (thin entry: conventions, principles, index) + docs/standards/ |
| Tools (composable capability) | .omc/skills/ + .mcp.json + scripts/ |
| Standards (the classification society) | design-system/ (tokens, components, patterns) + docs/standards/ |
Metaphor map: the shipyard is the shared facility; the classification society (docs/standards/ + design-system/) sets the rules a ship must pass to be seaworthy; drydock lays the keel; launch ships it.
--check instead)Inventory what exists before writing anything:
CLAUDE.md present? AGENTS.md present? (rule: if either exists, extend it in place; create the missing one as a one-line pointer to the other; never create both fresh)CONTEXT.md, docs/adr/, docs/standards/, docs/business/, design-system/, .omc/skills/, .mcp.json, scripts/, .gitattributes — which exist, which are missing?Report the map first, then act.
The document language for the generated harness files is a file-backed decision, not conversation state. Use this contract exactly:
<!-- shipyard-document-language-contract:start -->
{
"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>"
]
}<!-- shipyard-document-language-contract:end -->
Resolution order:
documentLanguage from the YAML frontmatter at the top of CONTEXT.md. A valid, script-unambiguous tag is authoritative for fresh Drydock and Launch invocations. If the persisted tag is bare or region-only Chinese, ask once at this authority tier; never bypass it with source inference.CLAUDE.md, then README.md. Infer only when every usable source has one unambiguous dominant language and all usable sources agree on the same normalized tag. One unambiguous source is sufficient when the other is missing or empty.zh-Hans or zh-Hant (optionally followed by a region). Bare zh and region-only Chinese tags are script-ambiguous and must be asked once rather than selecting a companion. Companion selection uses the longest language/script prefix: zh-Hans-* selects the zh-Hans companion and zh-Hant-* selects zh-Hant; preserve the full normalized tag (for example zh-Hans-CN) in CONTEXT.md.documentLanguage in CONTEXT.md (creating or extending its frontmatter without translating the key). This visible file is the init report's language authority; no daemon, hidden ledger, or runtime state is created.Only prose and human-facing labels/localizable values follow the selected language; structural keys stay language-stable. Keep paths, slash commands, flags, code fences, placeholders, frontmatter keys and machine-semantic values, YAML/JSON keys, lifecycle tokens, status enums, IDs, blockedBy, public Team blocked_by, and parser/control tokens byte-for-byte stable.
Ask the remaining questions only after language is resolved:
.scratch/) — for V1 harbor intake only GitHub is supported; also record the maintainer's communication authority for intake (issue comments, label changes) — consumed by the navigator's map home and the harbor's intake queueCLAUDE.md # thin entry — see seed A
CONTEXT.md # glossary — see seed B
.gitattributes # * text=auto eol=lf (kills CRLF warning noise on Windows)
docs/adr/0001-adopt-shipyard-harness.md
docs/standards/architecture.md # seed C
docs/standards/data.md
docs/standards/process.md
docs/business/README.md # seed D
design-system/README.md # seed E (UI repos only; stub otherwise)
design-system/tokens/README.md
.omc/skills/README.md # seed F
.mcp.json # {"mcpServers": {}}
scripts/README.mdSeed exemplars are reference companions, never a combined payload. Select exactly one companion after resolving documentLanguage; do not emit duplicate headings or labels from another companion. Use the longest matching language/script prefix: en-* uses English, zh-Hans-* uses Simplified Chinese, and zh-Hant-* uses Traditional Chinese, while Seed B writes the full resolved tag into documentLanguage. For any other valid tag, translate the English canonical companion once while preserving every stable token above.
Before generating seed prose, call the Skill tool with agent-doc-discipline and apply its rules; seed prose is ready only when every rule is checkable and carries a why, every surface is self-describing without chat history, and sources are named rather than assumed. A teammate or agent should be able to act on the seed's content by reading alone.
Seed A — CLAUDE.md, en (thin entry; extend in place if the file exists):
<!-- shipyard-seed-a:en:start -->
# <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/<!-- shipyard-seed-a:en:end -->
Seed A — zh-Hans companion (结构一致,二选一按文档语言渲染):
<!-- shipyard-seed-a:zh-Hans:start -->
# <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/<!-- shipyard-seed-a:zh-Hans:end -->
Seed A — zh-Hant companion(結構一致,只渲染此版本):
<!-- shipyard-seed-a:zh-Hant:start -->
# <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/<!-- shipyard-seed-a:zh-Hant:end -->
Seed B — CONTEXT.md (the stable frontmatter key is the language authority):
en:
<!-- shipyard-seed-b:en:start -->
---
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. Ship-specific terms only: a concept any sea chart carries does not get an entry.
## <term>
- Definition:
- Boundary: (is X, not Y)
- Avoid: (near-synonyms this ship does not use)
- Resolved ambiguity:<!-- shipyard-seed-b:en:end -->
zh-Hans:
<!-- shipyard-seed-b:zh-Hans:start -->
---
documentLanguage: zh-Hans
---
# 术语表
一条术语一个条目:定义、边界、一个已解决的歧义。术语敲定的当下写入。词汇对所有 spec、ticket、代码命名具有法律效力。只收本船特有的词;海图上都有的通用词不立条目。
## <term>
- 定义:
- 边界: (是 X,不是 Y)
- 禁用: (本船不用的近义词)
- 已解决的歧义:<!-- shipyard-seed-b:zh-Hans:end -->
zh-Hant:
<!-- shipyard-seed-b:zh-Hant:start -->
---
documentLanguage: zh-Hant
---
# 詞彙表
每個術語一個條目:定義、邊界、一個已解決的歧義。術語確定時立即寫入。這裡的詞彙是所有 spec、ticket 與程式碼命名的準則。只收本船特有的詞;海圖上都有的通用詞不立條目。
## <term>
- 定義:
- 邊界: (是 X,不是 Y)
- 禁用: (本船不用的近義詞)
- 已解決的歧義:<!-- shipyard-seed-b:zh-Hant:end -->
Seed C — docs/standards/architecture.md (data.md same shape; process.md additionally seeds a Testing volume — see Seed C2; prose renders in the document language):
# Architecture Standards
Rule-shaped, checkable writing; every rule carries a "why". Empty sections are legal — sediment is gradual.
## Module boundaries
## Error handling
## Dependency direction
## Seams and depth
- A seam is a real boundary two modules already cross in both directions. One adapter is a hypothetical seam; two adapters make it real. (Checkable: count the callers. Why: speculative abstraction is a tax paid before the need exists.)
- A deep module puts much behavior behind a small interface; deepen before widening. (Why: the interface is the permanent tax.)
- Logic lives behind the seam that owns its data; stable dependencies point inward. (Why: logic that reaches across a boundary it does not own couples every caller to the wrong neighbor.)Seed C2 — docs/standards/process.md, Testing volume (rendered when the repo tests code; prose renders in the document language):
## Testing
- Tests enter through the interface only: assert observable behavior at the seam. Reaching past the seam — querying the store directly, reading internal state — is false confidence. (Why: a test that survives refactors describes behavior, not plumbing.)
- Expected values come from an independent source of truth: a known-good literal or a worked example from the spec. (Why: a test that recomputes its expectation the way the code does can never disagree with the code.)
- One slice at a time: one failing test, one minimal implementation, repeat. Bulk-writing all tests first tests the imagination, not the behavior. (Why: the loop is a feedback engine; batching cuts the feedback.)
- Refactoring happens at the review axis, not inside the red-green loop. (Why: the loop answers "is the behavior right"; mixing redesign in hides regressions.)
- Tests open only at seams the reviewing captain approved. (Why: unapproved seams spend effort where the risk is not.)Seed 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".Seed 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)Seed 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..mcp.json seed: {"mcpServers": {}} — servers get added when a tool integration is actually needed, not speculatively.
Destructive-operation guardrail preset. On request, drydock seeds a hook preset that blocks destructive git operations — push, force-push, hard reset, clean, and branch deletion — behind explicit approval. It is installed as ordinary, inspectable repo config (a hooks entry the repo can read and audit — the same place the repo's other hooks live, e.g. the agent harness's settings hooks or a git pre-push hook), never a hidden enforcement layer: the rules are listed in the report, and removing the entry is an explicit human act. The preset protects the laid harness, not the agent — no agent session can end the repo's history by accident. Seed shape:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "<confirm-before-destructive-git>",
"description": "Block push, force-push, reset --hard, clean, and branch -D behind explicit approval"
}
]
}
}The matcher and command are the repo's own choice of hook mechanism — drydock seeds the shape and the rule list, and the confirmation command lives in the Tools pillar (scripts/) where the repo can read and audit it.
Commit-time quality gate preset. On request, drydock also seeds a commit-time hook preset that runs the repo's own checks before a commit lands — lint, typecheck, and the test suite, each wired to whatever entrypoints the repo already has (the Tools pillar's scripts/, the package manager's standard commands). Same shape as the guardrail preset: ordinary, inspectable repo config, listed in the report, removable only by an explicit human act. The gates are the repo's existing checks wired to the commit boundary — drydock adds no new checker of its own, and a repo without established check commands gets the scaffold with the commands left for the humans to name.
Tell the user, and rely on these flows to fill the skeleton:
The rule that keeps 先动手 aligned: starting needs no permission; landing goes into a shipyard slot. A change that cannot say which slot it lands in (or explicitly none) is the smell.
CONTEXT.md frontmatter documentLanguage: <tag>, including whether it came from explicit choice, the persisted marker, or unanimous inference--check any time to see drift between filesystem and harness--check modeDiff actual repo state against the shipyard map; report: missing surfaces, a missing or invalid CONTEXT.md frontmatter documentLanguage tag, CLAUDE.md sections that point at dead paths, CONTEXT.md terms unused in code, and standards never referenced. For each finding, state the confidence (high when mechanically checkable, low when heuristic) and whether it is actionable after excluding throwaway/scratch repositories explicitly declared by the user. Launch's yard gate treats high-confidence actionable findings as blocking; low-confidence or explicitly-classified false-positive findings, and findings in a user-declared scratch/throwaway scope, may be overridden only with deliberate per-invocation intent (see /oh-my-claudecode:launch). /oh-my-claudecode:ask-navigator may also run this audit in report-only mode while charting a foggy effort: findings are recorded verbatim in the map's Notes (never swallowed) and remain live findings for the launch yard gate.
The structured exit contract. The mechanical subset of this audit is executable: node scripts/shipyard-audit.mjs [repoRoot] checks the high-confidence classes only — missing surfaces, a missing/invalid documentLanguage tag, dead paths in CLAUDE.md, project-skill triggers present, and intent statuses within the documented vocabulary — and emits JSON on stdout (human summary on stderr) in the same finding vocabulary the lookout CLI uses: severity (high/medium/low/info), confidence (high/low), actionable, plus a stable finding id, evidence, and advice. Exit code 0 = clean, 1 = high-confidence actionable findings present, 2 = invocation error. The heuristic classes (terms unused in code, standards never referenced) stay in this prose layer by design — they are low-confidence by construction and the script never invents findings it cannot verify mechanically. Read-only.
© Yeachan-Heo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/drydock of Yeachan-Heo/oh-my-claudecode.
Open the folder on GitHubat commit 454bae0
Drydock Repo Harness Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Drydock Repo Harness Setup this skillYeachan-Heo/oh-my-claudecode | 40k | — | ~5.2k | Automated safety check: Pass | MIT | |
| AI Bomcdxgen/cdxgen | 1.1k | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Claude Project Bootstrapmp-web3/claude-starter-kit | 109 | — | ~1.9k | Automated safety check: Notes | MIT | |
| Project Healthjezweb/claude-skills | 1.1k | — | ~3k | Automated safety check: Pass | MIT | |
| Chatgpt AppsHaohao-end/openagent | 791 | 1 repos | ~4.9k | Automated safety check: Pass | Apache-2.0 | |
| Agent Setup Health Audittw93/Waza | 7.2k | — | ~5.2k | Automated safety check: Notes | MIT |
cdxgen/cdxgen
Generates AI-BOM, MCP inventory, AI skill inventory, and AI authorship provenance documents with cdxgen, cataloging models, inference services, Hugging Face purls, MCP servers and their…
mp-web3/claude-starter-kit
Sets up a project for Claude Code by surveying it and writing a .claude folder with a short CLAUDE.md, a CODEBASE.md overview, module docs and optional skills and hooks.
jezweb/claude-skills
All-in-one project configuration and health management. An agent skill from jezweb/claude-skills.
Haohao-end/openagent
Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI.
tw93/Waza
Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.
nukeop/nuclear
A skill your agent uses when writing, scaffolding, or modifying Nuclear plugins.
Yeachan-Heo/oh-my-claudecode
Sends a question or task to another locally installed agent CLI, such as Codex or Gemini, through omc ask and saves the answer as a file.
Yeachan-Heo/oh-my-claudecode
Charts a foggy effort into a map of decision tickets on the repo's issue tracker and works through them one per session, producing decisions rather than deliverables.
Yeachan-Heo/oh-my-claudecode
Runs an autonomous improvement loop on a repository: agents propose and execute plans, a tournament picks the winner by benchmark, and each round is recorded and plotted.
Yeachan-Heo/oh-my-claudecode
Takes a short product idea through requirements, design, planning, parallel implementation, QA cycles and multi-reviewer validation to produce working code.
Yeachan-Heo/oh-my-claudecode
Detects and gracefully cancels whichever OMC mode, autopilot, ralph, swarm, pipeline, or team, is currently active, then clears its state.
Yeachan-Heo/oh-my-claudecode
Maps a codebase directory by directory and writes linked AGENTS.md files, each pointing to its parent, to document what each area contains.
Works with
Categories
Sets up a shared repo environment for people and agents: CLAUDE.md, a CONTEXT.md glossary, ADRs, standards and a design-system folder, and audits drift with --check. Drydock scaffolds a shared harness in a repository, built on four pillars and five surfaces.json` and `scripts/`; and standards in `design-system/` for tokens, components and patterns.
Drydock Repo Harness Setup fits situations like: starting a repository that people and agents will both build on; moving knowledge out of chat history and into files in the repo; preparing a repo so a new teammate or agent learns context by reading; auditing a repo's shared harness for drift.
Run `npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a claude-code`. Or copy the skill folder (skills/drydock in Yeachan-Heo/oh-my-claudecode) into .claude/skills/drydock in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a codex`. Or copy the skill folder (skills/drydock in Yeachan-Heo/oh-my-claudecode) into .agents/skills/drydock in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Yeachan-Heo/oh-my-claudecode --skill drydock -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/drydock, .gemini/skills/drydock, .github/skills/drydock and .opencode/skills/drydock in your project.
Going by SKILL.md and its folder, Drydock Repo Harness Setup needs the command-line tools its instructions call (node).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Drydock Repo Harness Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.2k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Drydock Repo Harness Setup: AI Bom (cdxgen/cdxgen, 1.1k stars), Claude Project Bootstrap (mp-web3/claude-starter-kit, 109 stars), Project Health (jezweb/claude-skills, 1.1k stars) and Chatgpt Apps (Haohao-end/openagent, 791 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Yeachan-Heo (a GitHub user) maintains it in Yeachan-Heo/oh-my-claudecode, which has 39,751 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on October 8, 2026.
Source: Yeachan-Heo/oh-my-claudecode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.