project-adopt
Skill1 starsChanged 4 days agoMITView on GitHub
Use when an EXISTING project (a repo or folder that already has code, docs or git history) should become understandable to any AI agent — scans it, writes an evidence-backed AGENTS.md map, adds @AGENTS.md to existing CLAUDE.md / GEMINI.md without rewriting them, and optionally adds an agent task store, decision log, reports and a project-docs skill that follow the project's own conventions. Do NOT use for empty or brand-new folders (use project-kickoff) or for projects already set up by project-kickoff or project-adopt.
- Reads credentials
4 other projects use a version of this.
Adopted by
Most recently taken up by
- gabrielbchacon/ai-dev-bootstraptheir own version, first seen Oct 20, 2026
- jrittelmeyer/ai-dev-kittheir own version, first seen Oct 15, 2026
- leosimini/keelokittheir own version, first seen Oct 13, 2026
- ecodelearn/template-claude-code-opentheir own version, first seen May 7, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- ecodelearn/template-claude-code-open★ 25same name
- leosimini/keelokit★ 2same name
- jrittelmeyer/ai-dev-kit★ 1same name
- gabrielbchacon/ai-dev-bootstrap★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. 0 are common, 6 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
No secrets: Never copy values from .env* files, keys, tokens or connection strings.
- Distinctive: line 34
Stop and write nothing if:
- Very specific: line 52
Follow references/scan-checklist.md.
- Very specific: line 58
Ask only about unclear and conflict findings, in this order: purpose, build/test/run, stack, tracker, conventions, doc locations, related …
- Distinctive: line 105
every new file, as a tree
- Very specific: line 107
every Unknown and the Decide … task it gets
- Distinctive: line 119
Write in this order:
- Very specific: line 138
when DESIGN.md was created, one more task: Document the existing UI design in DESIGN.md (feature: none), whose criteria fill each section …
- Very specific: line 146
Leave the prose {{...}} and the templates/ folder untouched.
- Distinctive: line 147
If the project has its own task convention, rewrite "File naming" and "Next number" to describe that convention instead.
- Very specific: line 149
If FEATURES_DIR is the repo's own spec folder, do the same for features: describe that folder's naming, numbering and fields (or "no …
- Distinctive: line 186
Every path in backticks in the adopt part of AGENTS.md exists.
- Very specific: line 191
No value from any .env* file appears in anything you wrote.
- Distinctive: line 192
No token, key or other secret value appears in any file written or command run.
- Very specific: line 199
every Unknown and its task
- Very specific: line 205
if docs/tasks/ was chosen in a team repo, tell teammates about the renumber-on-collision rule in project-docs
- Very specific: line 210
If the target is a git repository, run git check-ignore -v -- <every file you wrote or edited> first.
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Project Adopt
Makes an existing project readable for any AI agent through AGENTS.md, following the
project's own conventions. Templates are in templates/ next to this file; what to read and
how to judge it is in references/scan-checklist.md.
Hard rules
- Additive only. Existing files may only gain lines. Never delete, reorder or reword an existing line. Every change to an existing file is shown as a diff and approved first.
- No files before approval. Nothing is written before the user confirms in step 5.
- Evidence or Unknown. Everything written comes from a file, git history or a user answer.
Anything else is
Unknown. - No secrets. Never copy values from
.env*files, keys, tokens or connection strings. - Nothing outside the repo is written, except the backup copies of step 6 and the
stack-tool installs (with their scratch downloads) the user chose in step 4 and approved in
step 5 (
references/stack-tools.md). Reading outside the repo, e.g.~/.claude/when searching for tools, is fine. - English only in every generated or appended text. Talk with the user in their language.
- Never change the tracker (tickets, statuses, fields).
- No git commits unless the user says yes at handoff.
Workflow
1. Preflight
Target = the current working directory, unless the user names another one.
Stop and write nothing if:
AGENTS.mdcontainsmanaged-by: project-adopt, or the target has all ofAGENTS.md,docs/PROJECT.mdand.claude/skills/project-docs/SKILL.md(set up by project-kickoff). Say the project is already set up. For one set up by project-adopt, say that a refresh mode does not exist yet. For one set up by project-kickoff, say that the project-kickoff skill upgrades it when its structure is older than the kit's.- The target has no README, no source or config files, and no git commits. Recommend the project-kickoff skill.
- The target has no source or config files, and every file in it other than
README.mdand.git/is a design doc (underdocs/design/ordesign-ui/, orDESIGN.md). It was designed first and nothing is built yet: recommend the project-kickoff skill, which can read those docs as part of its brief.
In a git repo, run git status --porcelain -- AGENTS.md CLAUDE.md GEMINI.md .gitignore. If it
prints anything, say those files have uncommitted changes and continue only on an explicit yes.
2. Scan
Follow references/scan-checklist.md. Write nothing. Build the findings table
(Topic | Finding | Evidence | State, states clear / unclear / conflict / missing).
Steps 3–6 all work from this table.
3. Questions (at most 7)
- Ask only about
unclearandconflictfindings, in this order: purpose, build/test/run, stack, tracker, conventions, doc locations, related repos. One question per message; show the evidence; multiple choice when possible. Findings with the same root cause (e.g. install, test and stack all depend on npm vs pnpm) are asked as one question. - Apply each answer to every finding it resolves (e.g. "pnpm" →
pnpm install,pnpm test,pnpm start), not only to the row the question came from. missingfindings are not asked. They become gap-fill offers (step 4) orUnknown, asreferences/scan-checklist.md§2 says.- "Don't know" →
Unknown. Do not push. - Then ask one optional closing question: "Is there anything the team does that isn't written down?" Each answer becomes a Working rules bullet in AGENTS.md.
4. Setup choices (not counted in the 7)
One per message:
- AI tools (multi-select): Claude, Gemini, Codex, Cursor, none. Existing
CLAUDE.md/GEMINI.mdget@AGENTS.mdwhatever the answer; this only decides which new pointer files are created. Codex and Cursor readAGENTS.mddirectly. Agent task store:
docs/tasks/: committed. Best for solo projects, because parallel branches can produce duplicate numbers..agents/tasks/: local and gitignored. Best for team repos.- none.
Skip this question if the project already has its own task folder; its convention is used.
- Gap fills (multi-select). Offer only items with no equivalent, per
references/scan-checklist.md§3:docs/DECISIONS.md+docs/decisions/(no decision records),docs/reports/(no reports folder),docs/PROJECT.md(the README does not say what the project does),docs/ROADMAP.md(no roadmap),docs/issues/(no tracker),docs/features/(no spec folder; only with a task store, since features are built through tasks),docs/design/ARCHITECTURE.md(no architecture doc), andDESIGN.md+design-ui/(the project has a UI and no design system). - Project skills: 0–3 suggestions drawn from workflows that repeat in the project (e.g. a
release checklist in CONTRIBUTING), skipping skills that already exist under
.claude/skills/. Give each a kebab-case name, a one-line purpose and the reason. The user picks any number, including none. - Stack tools: per
references/stack-tools.md— only when Claude was selected and at least one stack finding isclearafter applying the step-3 answers. Up to 6 installed or installable skills, agents, plugins and MCP servers matching those findings, plus up to 4 installed skills or agents for the project's work areas (testing, API security, database, user interface); turned-off tools are left out. The user picks reference, install or skip for each.
project-docs is installed automatically whenever a task store, docs/features/, docs/issues/, docs/reports/ or docs/DECISIONS.md is created, or the project has its own task or spec folder.
5. Summary for approval
Show, in the user's language:
- the final findings table
- every new file, as a tree
- a unified diff for every existing file that will change
- every
Unknownand theDecide …task it gets - pointer files, task store, gap fills and skills
- stack tools: each chosen tool with reference / install, and the exact command of every install
Revise until the user explicitly confirms. Write nothing before that.
6. Generate
DATE = today, YYYY-MM-DD. Before editing an existing file, copy it to
<scratchpad>/adopt-originals/<same relative path>, or to a temporary folder outside the
target if there is no scratchpad.
Write in this order:
- Task store:
<store>/.gitkeep. For.agents/tasks/in a git repo, append the line.agents/to.gitignore, creating the file if it does not exist. - Gap-fill docs from
templates/docs/:PROJECT.mdROADMAP.md, with phase-1activeDECISIONS.md(the decision index) anddocs/decisions/D-0001-adopted-ai-readable-project.mdrecording this adoptiondocs/issues/.gitkeepanddocs/reports/.gitkeep, when selecteddocs/features/.gitkeep, when selecteddocs/design/ARCHITECTURE.md←templates/docs/design/ARCHITECTURE.md, filled fromclearfindings only,EMPTY=Not documented yetDESIGN.md←templates/DESIGN.md(EMPTY=Not documented yet),design-ui/README.md,design-ui/tokens.css(verbatim) anddesign-ui/proposals/.gitkeep, when selected
Decide <topic>tasks, one perUnknown, only if a task store exists:- template:
templates/skills/project-docs/templates/task.md - numbered from the next free number
status: todo,feature: none,ticket: none- a task about a stack
Unknownalso gets the criterion inreferences/stack-tools.md§10 - when
DESIGN.mdwas created, one more task:Document the existing UI design in DESIGN.md(feature: none), whose criteria fill each section from the code and ask the human whether the current look is the approved one
- template:
.claude/skills/project-docs/, when needed (step 4):- Copy
templates/skills/project-docs/includingadding-a-feature.mdandfinding-tools.md, and fill only the named placeholders inSKILL.md:{{TASKS_DIR}},{{DECISIONS_PATH}},{{OTHER_LOCATIONS: …}},{{TRACKER_RULES: …}},{{PROJECT_CONVENTIONS: …}},{{FEATURES_DIR}}. DECISIONS_PATH= the existing ADR folder or decision log, ordocs/decisions/when this adoption created the decision log.FEATURES_DIR= the repo's own spec folder (scan-checklist §3), elsedocs/features/if created — written in backticks — else the plain wordsnot used.- Leave the prose
{{...}}and thetemplates/folder untouched. - If the project has its own task convention, rewrite "File naming" and "Next number" to describe that convention instead.
- If
FEATURES_DIRis the repo's own spec folder, do the same for features: describe that folder's naming, numbering and fields (or "no frontmatter"), and replace the feature row of "Required frontmatter" and the Feature status block with "Features follow the existing format in<folder>; ask the human before changing a spec's status".
- Copy
- Project skill skeletons from
templates/skills/skill-skeleton.md, into.claude/skills/<name>/SKILL.md(RELATED_TOOLSperreferences/stack-tools.md§9). AGENTS.md:- missing → create it from
templates/AGENTS.md - exists → append, in this order:
- a blank line
- the heading
## Project map (project-adopt)(not in the template; write it as given) - the marker line (line 1 of the template)
- the template from
## Start hereto the end (skip its title and summary), with every##demoted to###
- in both cases fill
TOOL_ROWSperreferences/stack-tools.md§9
- missing → create it from
- Pointer files:
- An existing
CLAUDE.md/GEMINI.mdthat is not a symlink and has no@AGENTS.mdline: insert@AGENTS.mdand a blank line at the top. - A missing pointer file for a selected AI: copy it from
templates/.
- An existing
- Stack tool installs, if any were approved — per
references/stack-tools.md§6–§8.
Filling templates. {{NAME}} → the value. {{NAME: instruction}} → follow the instruction
and write the result. If an instruction says to delete a line or section, delete it whole.
EMPTY (the empty-section fallback in DESIGN.md and ARCHITECTURE.md) → Not documented yet.
Paths in backticks must exist. A path in backticks is written from the repo root
(design-ui/tokens.css, not tokens.css), in every column of every table. When a source
mentions a path that does not exist yet (e.g. "put SQL in src/db/ once it exists"), write it
without backticks and add "(planned)".
File names for features, tasks, issues and reports: <kind>-<NNNN>-<kebab-topic>-<DATE>.md, where
kebab-topic is 2–5 lowercase English words, [a-z0-9-] only: delete any other character
without replacing it (CI/CD → cicd); a hyphenated word keeps its hyphen and counts as one
word (Decide phase-1 features → decide-phase-1-features).
Self-check before handoff:
- For every saved original,
diff <original> <file>prints no line starting with<. - Every path in backticks in the adopt part of
AGENTS.mdexists. grep -rl '{{' . --include='*.md'lists no file you wrote outside.claude/skills/project-docs/, and the named project-docs placeholders are all filled.AGENTS.mdcontains the marker exactly once, and the part from the marker to the end is at most 150 lines.- No value from any
.env*file appears in anything you wrote. - No token, key or other secret value appears in any file written or command run.
7. Handoff
Report:
- the files created
- the files edited, with the number of lines added to each
- every
Unknownand its task - stack tools: installed / failed / referenced, with follow-ups (reload plugins, commands the user must run with their own key)
- next steps:
- review the AGENTS.md map
- fill in the draft skill skeletons
- if
docs/tasks/was chosen in a team repo, tell teammates about the renumber-on-collision rule in project-docs - for any new feature, follow
.claude/skills/project-docs/adding-a-feature.mdwhen project-docs was installed
If the target is a git repository, run git check-ignore -v -- <every file you wrote or
edited> first. If it prints anything, list each ignored file with the rule and the file that
holds the rule, and say that these files stay out of every commit unless they are added with
git add -f. Leave out files under a folder this run added to .gitignore (such as
.agents/), which are ignored on purpose. Never edit any .gitignore beyond that. Then ask
whether to commit; on a yes, when some listed files are ignored, ask separately whether to add
them with git add -f. Never commit without a yes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

