Adopt
The engineering memory for Claude Code — a CLAUDE.md brain Claude reads before it writes, plus living docs kept in sync with your code: a tiered design doc-base (tokens, components, DDRs), pricing & unit-economics, and region-aware legal.
npx -y skills add erenisci/acta --skill adoptAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Existing codebase with few docs — reverse-engineer only the missing ones from the code; never overwrite. Trigger on /acta:adopt, "document this codebase", "backfill docs".
SKILL.md
5.9 KB, as published. Nobody here has run it
acta:adopt
The backfill. Point it at a real project that's missing docs and it reverse-engineers a right-sized doc set from the code, then builds the brain — without touching anything that already exists.
Shared: ${CLAUDE_PLUGIN_ROOT}/acta/ (doc-catalog.md, disciplines.md, templates/). Same catalog/templates as
acta:build, so adopted docs are consistent with built ones. The difference: source is the code, and the
overwrite policy is always SKIP.
Language
Generate content in the project's documentation language (registry language:, default English); talk to the user in the language they use. See ${CLAUDE_PLUGIN_ROOT}/acta/principles.md.
Flow
-
Scan the codebase (read-only). Detect:
- Stack:
package.json,pyproject.toml/requirements.txt,go.mod,Cargo.toml,pom.xml, etc. - Structure: top-level folders, entry points, module boundaries.
- Routes/endpoints:
app/,pages/,routes/, controllers, OpenAPI files. - Data: schemas, migrations, ORM models → for
db-design/erd. - Ops signals: Dockerfile, CI config (
.github/workflows, etc.),.env.example→env-vars/ci-cd/deployment. Read only the committed.env.example/.env.sampletemplate — never a real.env/.env.local(secrets); record names, not values. - Tests: presence/kind →
testing-strategy. - Domain signals → project type + pack via
${CLAUDE_PLUGIN_ROOT}/acta/project-types.md: PyTorch/scikit/dataset →ml; langchain/embeddings/vector store →llm; Solidity/Foundry/Hardhat →web3; Godot/Unity/Unreal →game; firmware/Arduino/ESP32/RTOS →hardware; Airflow/dbt/Spark →data; scanner/detection/exploit tooling →security; Terraform/k8s/Ansible →devops; ROS/actuator/SLAM →robotics; ARKit/Unity XR →xr; Stripe/payments/ledger →fintech; simulation/HPC/numerical →scientific; ffmpeg/HLS/transcoding →media; GIS/GeoJSON/mapping →geospatial. Report the detected profile (stack + type) in 3–5 lines before doing anything else.
- Stack:
-
Inventory existing docs. Check the filesystem and any
.claude/acta.mdregistry for docs that already exist (README,docs/**, CLAUDE.md, CHANGELOG, ADRs). Build two lists: present vs missing. -
Recommend & confirm the doc set. From the detected profile, recommend core disciplines/depth (e.g. API routes →
api; migrations →db-design,erd; CI file →ci-cd; tests →testing-strategy) plus the matching domain pack for the detected type (e.g. Godot → game pack; langchain → llm pack). Confirm via multi-select (default depthstandard). Intersect with the missing list — you only ever generate missing docs. -
Short product intake (optional). Code reveals how, not why. Ask ≤4 questions to capture product intent (what/for whom/goals) so
PRD/arch-overviewaren't hollow. Skippable → those fields becomeTBD. -
Generate ONLY missing docs from the code analysis, rendered via the catalog's templates. Unknown →
TBD. Document what actually exists — do not invent architecture the code doesn't show.- Seed
docs/architecture/adr/0001-initial-architecture.mddescribing the as-is architecture/stack (only if no ADRs exist). - Paths and filenames come straight from
doc-catalog.mdexactly as listed (folders lowercase; root meta UPPERCASE, docs/ lowercase-kebab).
- Seed
-
Write/refresh the brain — without clobbering.
CLAUDE.md: if absent, create with the index block. If present, inject the marker block; if it already has other content, append the block once and leave existing content untouched (never rewrite the user's CLAUDE.md prose)..claude/acta.md: registry with a row per doc — generated docsactive; pre-existing docs recorded with statusexternalso futureacta:trackknows they exist but weren't authored here.docs/README.md: if absent, generate it; if present, skip (report it).
-
Backfill the skill-owned layers (detect → offer, don't force). The catalog disciplines above don't cover
docs/design/,docs/business/,docs/legal/— those are owned by their own skills. Scan for their signals and, if found and the layer is missing, offer to run the skill (each reads the same code, so nothing is re-derived):- design — a styling system in the code (Tailwind config, CSS variables/tokens, a component library, theme
files) → suggest
/acta:designto reverse-engineertokens.md+components.md+ the design-system from it. - business — pricing/plans/billing in code or config (a Stripe catalog, a
planstable) → suggest/acta:business. - legal — data collection, cookies/analytics, third-party vendors/sub-processors → suggest
/acta:legal. Offer only; adopt itself never writes these layers (they're conversational and skill-owned).
- design — a styling system in the code (Tailwind config, CSS variables/tokens, a component library, theme
files) → suggest
-
Summary. Two clear lists:
- Created (missing docs now generated).
- Left untouched (pre-existing docs — path each), explicitly: "already present, not modified."
- Suggested layers (any skill-owned layer detected but not generated — name the skill to run).
Rules (the defining guarantee)
- NEVER overwrite an existing doc. Existing → always skip + report. No merge, no prompt-to-overwrite — adopt is safe-by-default on a real project.
- Never fabricate. Reverse-engineer only what the code supports; everything else is
TBDor an intake question. - Idempotent: re-running only fills newly-missing gaps; already-present docs stay untouched; brain/registry regenerate in place.
- Content in the project's documentation language (default English). Solo right-sizing applies. After adopt, ongoing updates are
/acta:track's job.