Arkhe-claude-plugins quality-stack
git clone https://github.com/joaquimscosta/arkhe-claude-plugins
T=$(mktemp -d) && git clone --depth=1 https://github.com/joaquimscosta/arkhe-claude-plugins "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/devtools/skills/quality-stack" ~/.claude/skills/joaquimscosta-arkhe-claude-plugins-quality-stack && rm -rf "$T"
plugins/devtools/skills/quality-stack/SKILL.mdQuality Stack
Scan a project's build configuration across JVM, Android, Node.js, and Python ecosystems, cross-reference against curated research documents, and assist with tool setup.
Pre-flight
- Run the orchestrator — it auto-detects ecosystems:
python3 <skill-path>/scripts/scan_project.py <project-root> - If
, check"error": "no_ecosystem_detected"
for subproject paths.nearby_project_files - Monorepo? — use
or--recursive
to force a specific scanner:--ecosystempython3 <skill-path>/scripts/scan_project.py --recursive <project-root> python3 <skill-path>/scripts/scan_project.py --ecosystem node <project-root> - Legacy (JVM only) —
still works as a backwards-compatible wrapper.scan_tooling.py
Two-Phase Workflow
Phase 1: Recommend
-
Run the scanner on the project root (see Pre-flight above).
-
Fetch research documents via WebFetch — only for detected ecosystems:
Android (when
containsecosystems
):"android"https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/android-ecosystem-tooling.md https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/android-testing-ecosystem.mdJVM (when
containsecosystems
):"jvm"https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/jvm-quality-tools-evaluation.md https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/kotlin-spring-boot-testing-ecosystem.mdNode.js (when
containsecosystems
):"node"https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/node-quality-tools-evaluation.mdPython (when
containsecosystems
):"python"https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/python-quality-tools-evaluation.mdCross-cutting (always):
https://raw.githubusercontent.com/joaquimscosta/arkhe-claude-plugins/main/docs/research/cross-cutting-devtools-evaluation.mdIf WebFetch fails, warn the user and proceed using scanner results + LLM knowledge only.
-
Cross-reference scanner output against research recommendations per ecosystem:
- Identify tools recommended but missing from the project
- Check
field:status
ordisabled
tools need attentionconfig-only - Flag outdated or superseded tools
- Apply ecosystem-specific SKIP rules (see WORKFLOW.md)
- Review
for threshold values and settingstool_config
-
Generate the recommendation report using the format in WORKFLOW.md.
Phase 2: Setup
After presenting the report, present tools for selection using the multi-round protocol in WORKFLOW.md. Group by ecosystem and priority tier. Include effort estimates. After user completes selection across all rounds:
- Read the relevant research doc section for setup instructions
- Apply Setup Guards — resolve versions, check compatibility
- For each selected tool, apply changes per ecosystem:
- JVM: Add Gradle/Maven plugin, test deps, config files
- Node.js:
, tsconfig edits, config file creationpnpm add -D - Python:
, pyproject.toml edits, config file creationuv add --dev - Cross-cutting: CI/CD workflow steps, Lefthook config, EditorConfig
- Verify each tool after configuration — run the tool's check command, verify filter patterns against actual codebase paths, and check for config inheritance conflicts. See WORKFLOW.md Post-Setup Verification.
- Re-run the scanner to confirm all tools detected
Priority Classification
| Priority | Criteria |
|---|---|
| NOW | Essential missing tools, zero-dependency additions |
| SOON | High-value additions requiring minor setup |
| LATER | Nice-to-have with prerequisites |
| SKIP | Not applicable (wrong ecosystem, incompatible version, deprecated) |
Ecosystem-aware rules — see WORKFLOW.md for full classification tables per ecosystem.
Key rules:
- Android Compose project: NOW Compose UI testing, SOON Roborazzi; SKIP Espresso
- Android KMP project: NOW commonTest setup, NOW Turbine; SOON Ktor MockEngine
- Android no lint config: NOW Android Lint baseline; SOON custom lint rules
- JVM Pure Kotlin: SKIP Error Prone, SpotBugs; JVM Pure Java: SKIP Detekt, ktlint, MockK
- JVM Spring Boot 4+: SKIP REST Assured, NOW MockMvcTester
- Node.js no linter: NOW ESLint; no formatter + no Biome: NOW Prettier
- Node.js TypeScript not strict: NOW enable strict
- Python no linter: NOW Ruff; no type checker + has type annotations: NOW mypy
Cross-Cutting Tools
| Tool | When to Recommend | Priority |
|---|---|---|
| Lefthook | No git hook manager + has linters | SOON |
| commitlint | No commit conventions + has team | LATER |
| EditorConfig | Missing | NOW |
| Renovate/Dependabot | No dependency automation | SOON |
| Trivy/gitleaks | No security scanning | SOON |
Research Documents
Fetch via WebFetch at runtime — only for detected ecosystems:
- Android Ecosystem Tooling:
android-ecosystem-tooling.md - Android Testing Ecosystem:
android-testing-ecosystem.md - JVM Quality Tools:
jvm-quality-tools-evaluation.md - JVM Testing Ecosystem:
kotlin-spring-boot-testing-ecosystem.md - Node.js Quality Tools:
node-quality-tools-evaluation.md - Python Quality Tools:
python-quality-tools-evaluation.md - Cross-Cutting Tools:
cross-cutting-devtools-evaluation.md
Scanner Architecture
scripts/ scan_project.py # Orchestrator — auto-detects + merges scan_jvm.py # JVM scanner (Gradle/Maven) scan_android.py # Android scanner (AGP/Compose/KMP) scan_node.py # Node.js/TypeScript scanner scan_python.py # Python scanner scan_cross_cutting.py # Cross-cutting tools (CI, hooks, security) shared.py # Shared utilities scan_tooling.py # Legacy wrapper → scan_jvm.py
References
- Workflow: See WORKFLOW.md for classification rules and report format
- Examples: See EXAMPLES.md for realistic audit scenarios
- Troubleshooting: See TROUBLESHOOTING.md for scanner issues