skills/do-adopt/SKILL.md
Scan a project for missing best-practice areas and implement the top recommendation for each gap. Currently covers linting and unit testing. Installs tools, writes configs, and adds CI steps.
npx skillsauth add thermiteau/maverick do-adoptInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Depends on: do-recommend, mav-bp-linting, mav-bp-unit-testing, mav-git-workflow, mav-local-verification
Scan the current project for missing best-practice areas and implement the top recommendation for each gap. This is the action counterpart to do-recommend — instead of listing options, it installs and configures the best-fit tool directly.
| Topic | Best-Practice Skill | What to detect | | ----- | ------------------- | -------------- | | linting | mav-bp-linting | Linter configs, formatter configs, lint scripts, pre-commit hooks | | unit-testing | mav-bp-unit-testing | Test frameworks, test runners, coverage tools, test files |
When invoked, process all topics in the table above unless `` names a specific topic — in that case process only that topic. Do not prompt the user for which topics to process.
For each topic:
Use the same detection logic as do-recommend:
Linting:
eslint.config.*, .eslintrc*, .prettierrc*, prettier.config.*, ruff.toml, pyproject.toml [tool.ruff], .golangci.yml, .stylelintrc*eslint, prettier, ruff, clippy, golangci-lint, rubocop, stylelintUnit testing:
jest.config.*, vitest.config.*, pytest.ini, pyproject.toml [tool.pytest], setup.cfg [tool:pytest]vitest, jest, mocha, pytest, unittest, junit, rspec**/*.test.*, **/*.spec.*, **/test_*.*If the practice is already implemented, skip the topic. Print: <topic>: already implemented, skipping.
Determine the primary language(s) and framework(s) by reading:
package.json (Node/JS/TS, look at framework deps like react, vue, express, etc.)pyproject.toml / requirements.txt (Python)go.mod (Go)Cargo.toml (Rust)build.gradle.kts / pom.xml (JVM)Read the corresponding best-practice skill (e.g., skills/mav-bp-linting/SKILL.md) to understand the recommended tools and configuration standards for the detected stack.
If docs/maverick/recommendations/<topic>.md exists and has status: pending, read it and use the top recommendation (the one marked "Recommended"). This avoids re-analysing the stack when do-recommend was already run.
If no recommendation file exists, determine the top recommendation directly from the best-practice skill's language-specific defaults table.
Install and configure the recommended tool. Follow the best-practice skill's standards precisely.
For linting — implement all of:
eslint.config.js with flat config for TS/JS, ruff.toml for Python). Follow the error-only policy from the best-practice skill.lint and format (or equivalent) scripts to the project's script runner (package.json scripts, Makefile, pyproject.toml scripts)For unit testing — implement all of:
vitest.config.ts for Vite projects, jest.config.js for other JS/TS, pyproject.toml [tool.pytest] for Python)test script (and test:coverage if the framework supports it)If a recommendation file exists at docs/maverick/recommendations/<topic>.md, update its status from pending to adopted. If no recommendation file exists, create one with status: adopted using the same structure as do-recommend but with only the implemented option.
Create a conventional commit for each topic adopted:
chore: adopt <tool-name> for <topic> (<topic>)
Follow the mav-git-workflow skill for commit conventions. Do not push — the user will review and push.
development
--- name: do-test description: Write or update tests for a code change. Operates in two modes: `unit` (module-scoped, fast, deterministic) and `integration` (crosses module / service / database boundaries). Intended to be invoked once per testable change from inside a do-issue-* or do-epic phase. Mode is required. argument-hint: mode: unit or integration user-invocable: true disable-model-invocation: false --- **Depends on:** mav-bp-unit-testing, mav-bp-integration-testing, mav-local-verificati
development
Implement a focused code change. Use this skill as the wrapper for any implementation work so the Maverick workflow report captures what was done and so the agent applies the project's coding standards before editing. Intended to be invoked once per task from inside a do-issue-* or do-epic phase, not standalone.
testing
How to stack a PR on top of an unmerged sibling branch, and how to retarget it to the repo's default branch once the sibling merges. Prevents orphan-merge incidents when a dependent story is ready before its parent.
development
Claim, lease, heartbeat, and release protocols for when multiple Claude Code instances may act on the same issue or epic concurrently. GitHub labels and marker comments are the coordination surface; local state is a cache.