ark-adopt

ark-adopt is a skill for Claude Code, Codex from pedroknigge/arkgate. It costs 33 tokens per session (8,050 once invoked), scanned A, original, MIT.

A guided setup for an architecture rules file called ark.config.json. It compares the rules with the project's real folders and records reusable structural patterns.

In plain words
What is it for?
Use it when starting or correcting an Ark-based project structure, defining layers and shared areas, and preparing rules for placing future files.
Why use it?
It helps prevent architecture rules from becoming inaccurate or too strict as the codebase changes. The included CLI checks whether the setup matches the repository.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents.

Good fit Use it when starting or correcting an Ark-based project structure, defining layers and shared areas, and preparing rules for placing future files.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/pedroknigge/arkgate/ark-adopt
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add pedroknigge/arkgate --skill ark-adopt
Clone the repo
git clone --depth 1 https://github.com/pedroknigge/arkgate

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for ark-adopt

README.md
[![agentmods](https://agentmods.dev/badge/skills/pedroknigge/arkgate/ark-adopt/github.svg)](https://agentmods.dev/skills/pedroknigge/arkgate/ark-adopt)
Your own site
<a href="https://agentmods.dev/skills/pedroknigge/arkgate/ark-adopt"><img src="https://agentmods.dev/badge/skills/pedroknigge/arkgate/ark-adopt/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for ark-adopt

Your own site · 80×15
<a href="https://agentmods.dev/skills/pedroknigge/arkgate/ark-adopt"><img src="https://agentmods.dev/badge/skills/pedroknigge/arkgate/ark-adopt.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 33 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 8,050 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00033 $0.08050
Opus 5.5 $0.00013 $0.03220
Sonnet 5.5 $0.00007 $0.01610
Haiku 4.5 $0.00003 $0.00805

Measured 9d ago against content hash f647830419af, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

ark-adopt scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

templates/agent-skills/ark-adopt/SKILL.md · 455 lines

How it starts

The opening of the file, as written. The whole thing — 455 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/ark-adopt — Mark the path (session 0)

Contener · Guiar · Ordenar. In plain words: contain the write, guide the next step, order leftover mess. This door is Contener: write the path so the tree has honest houses. Skills never enforce — CLI / hooks / CI do.

When: empty tree, or the rules file does not match the real folders (session 0). Not when: a single new file (/ark-place) or leftover design after the path is honest (/ark-explore then /ark-autopilot).

Steps

  1. Read arkgate-check --doctor (one light, one next action).
  2. Write ark.config.json (and a baseline only for genuine debt) in this turn.
  3. Re-run doctor. Day-to-day new files: /ark-place.

Checklist

  • Existing tree: propose SharedKernel (types/constants) + CompositionRoot (wiring) + src/**/domain/**. Never dump bare src/lib/** into Application.
  • Every include path must land in a layer. Include that classifies no file is the same as an empty check — not a pass. Fix globs here; do not leave a loose gap.
  • Generate .ark/golden-pattern.json (load-bearing for /ark-place).
  • Future houses: mark unused layer globs reserved / allowEmpty so --strict-config does not fail.
  • When the product map or glossary names a house, write layers[].description as app-context copy (what this folder is in the product). Compact starter may omit. Do not invent captions. Do not invent /ark-describe.
  • When the product map names who a folder is for, write layers[].trustBoundary (public | auth | admin | internal). Compact starter may omit. Do not invent tags. Absence is silent. No /ark-trust.
  • When the product map names who owns a folder, write layers[].owners (GitHub handle or email). Compact starter may omit. Do not invent people. Absence is silent unless the user asked for required owners — then write requireLayerOwners: true after the live houses have names. No /ark-owners.
  • When a layer exposes a deliberate public barrel or facade (e.g. src/domain/index.ts), optional layers[].entrypoints restricts cross-layer imports into that layer to matching globs. Intra-layer imports stay unrestricted. Absence is silent. No /ark-entrypoints.
  • On brownfield trees with genuine pre-existing debt, ark init --baseline (or arkgate-check --write-baseline) freezes .ark-baseline.json so --strict-merge blocks only new regressions.
  • When the user wants required gates (--require-gates / --strict-merge / required GitHub check) and there is no docs/adr/ (or docs/decisions/), leave a short decision note there — only if they loosen a rule or add a real gate. Not every change. Doctor residual is soft. No /ark-adr.
  • When a product-domain doc is already in play (docs/domain.md or a sibling) and doctor JSON has statesTransitions or statusTransitionCatalog, add a short states → transitions table (or one link) there. Use catalog names when present. No flag soup. Soft residual. Silent when that doc is absent or Domain has no status vocabulary. No /ark-states.
  • When doctor JSON has noDomainFrontend, keep the empty Domain house — do not delete it to “clean” empty layers. Next is one Domain file (/ark-place), not a weaker contract. Soft. Silent when there is no frontend or Domain already has files. No /ark-domain.
  • When doctor JSON has prototypeShortcuts, keep the Persistence / Domain house — do not delete it to “clean” empty layers. Next is one Persistence adapter or Domain policy file (/ark-place), not a weaker contract. Soft. Silent when those houses are absent or the shortcut is already in the right house. No /ark-prototype.
  • When the tree is adopted and doctor JSON has invariantTestsPath (or the check names INVARIANT_TESTS_PATH_MISSING), write coverage.testGlobs or coverage.coverageRoots to a real tests folder. Fail-closed until that path exists. Silent when not adopted, the catalog is empty, or every invariant sets coverage.test false. No new skill.
  • When any invariant is enforced and doctor JSON has invariantCoverageRoots (or the check names INVARIANT_COVERAGE_ROOTS_MISSING), write coverage.coverageRoots to the folder the test runner uses. Fail-closed until that path exists. coverage.testGlobs alone is not enough. Silent when no invariant is enforced. No new skill.
  • coverage.symbol means a declaration of that identifier in a non-test file. Doctor and --rules-inventory print symbolEvidenceFile and the discard counts even when uncovered is 0. Read that path. Imports and calls in tests do not count. That declaration text is not “the tests pass” — ArkGate never runs tests. No new config key.
  • CLI-first: if arkgate-check already resolved the root, do not wait on MCP.
  • Do not add arkRun or arkOrder unless the user wants that extra. When they do, write advisory extra in this turn (arkRun schema 1.2+; arkOrder schema 1.3+). Absence is silent and valid. Compact starter stays extras-off. Skills never enforce.

Read the full file on GitHub · 455 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago Changed · +6 lines f647830419af
  2. 23d ago Changed · +1 lines de9ae080c9f8
  3. 24d ago Changed · +3 lines f01641dfe07d
  4. 27d ago Changed · +3 lines e22a30ced67c
  5. 28d ago Changed · +14 lines ad3ed4e0cf32
  6. 1mo ago Changed · +1 lines ab75d5d438eb
  7. 1mo ago Changed · +7 lines 4e4c4dd8cfe4
  8. 1mo ago Changed · +5 lines a4e311c49204
  9. 1mo ago Changed · +5 lines 400aa702ef83
  10. 1mo ago First seen · 410 lines · 33 tokens per session scan A 28de0f4bfbd6

Subscribe to this mod's changes

ark-adopt is a skill published in the GitHub repository pedroknigge/arkgate (1 stars, last pushed today), licensed MIT. It adds 33 tokens to every session and 8,050 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.