klaussy-repo-conventions 🔍
Discover once, align everywhere. The core conventions discovery and repository mapping engine. It scans codebases for structural styles, rates conventions on a 1-5 scale, traces endpoint-to-store data flows, and compiles a canonical
CLAUDE.mdand rules folder consumed byklaussy-agents.
Designed by an ex-GitHub, ex-Twitch, and ex-Microsoft engineer, klaussy-repo-conventions is a lightweight, AST-backed static-analysis CLI. It parses file patterns, naming conventions, import trees, and error handling behaviors across multiple programming languages—acting as the single source of truth for downstream AI agent configuration.
⚡ Quick Start
Analyze your codebase and generate agent-optimized context files in seconds:
# Install using pipx (recommended)
pipx install klaussy-repo-conventions
# Scan the current directory
conventions discover
This scans the local workspace, auto-detects project languages, and writes detailed convention metrics and ratings into the .conventions/ directory.
🚀 Key Features
- 🔍 AST-Backed Convention Scan: Traverses your AST (Python) and code structures (Go, Node, Rust, Kotlin, Java, C#, Ruby, Swift, PHP, C++) to detect style patterns, naming strategies, and testing setups.
- 📊 Multi-Language Analysis: Deep-dives into eleven languages, plus cross-language assets (Docker, Kubernetes, GitHub Actions).
- 🗺️ Architecture Data-Flow Maps: Computes package dependency graphs, detects circular dependencies (DFS), and traces API endpoints down to their database store layers, generating Mermaid flowcharts directly in
CLAUDE.md. - 🤖 Prescriptive Agent Scoping: Generates
CLAUDE.mdand path-scoped rules files in.claude/rules/with imperative instructions and embedded few-shot code evidence blocks—giving agents the exact models they need to mirror. - 📈 Review & Scoring Gate: Rates each detected convention on a 1-5 scale, listing prioritized improvement suggestions. Ideal for local quality audits and CI/CD validation gates.
- 🔌 Pluggable Architecture: Write custom python detectors and rating rule extensions using the plug-in framework.
🤖 CLAUDE.md & Scoped Rules Generation
conventions discover compiles a comprehensive project overview, tech stack, and commands reference directly into CLAUDE.md, alongside directory-scoping rules:
# Generate CLAUDE.md in .claude/ directory
conventions discover --claude
# Or include along with other review formats
conventions discover --format claude
🧠 Few-Shot Agent Optimization
Path-scoped rule files in .claude/rules/*.md and configuration files are optimized specifically for LLM context windows:
- Prescriptive Directives: Observational metrics are converted into imperative instructions (e.g., "Name functions using snake_case style").
- Few-Shot Code Examples: If a convention is detected, the CLI appends the best real-world code snippet from the scanned files, showing the agent exactly how your conventions are implemented.
- Token-Optimized Directory Map: To avoid bloating the main
CLAUDE.md, the full repository file layout is written to.claude/directory-map.mdand referenced via a link. It keeps production code folders uncollapsed while collapsing non-essential directories (tests, docs, workflows) to keep token usage optimal. - Dynamic Decision Log & Pitfalls: Automatically scans git logs, changelogs, release notes, and CI configurations to populate your repository gotchas and architectural decisions, minimizing the need for manual placeholders.
🔄 Enhanced via --init
Add the --init flag to further enrich the generated CLAUDE.md using the Claude Code CLI. This pipes the static-analysis output through Claude to populate additional custom gotchas and decision history:
conventions discover --claude --init
Requires the Claude Code CLI (npm install -g @anthropic-ai/claude-code).
🌐 Language Support
The engine supports 300+ conventions across eleven languages and cross-language configurations:
| Language/Platform | Conventions | Sample Scanned Patterns |
|---|---|---|
| Python | 96 | typing coverage, docstrings, testing fixtures, stdlib logging, error boundaries, sqlalchemy, context managers, async, dependency injection |
| Node.js/TypeScript | 60 | TypeScript strictness, jest/vitest frameworks, express/fastify api, mongoose, state management, monorepo workspaces, migrations |
| Go | 43 | modules, testing frameworks, stdlib loggers, channels & goroutines, gRPC structures, wire DI, database configurations |
| Rust | 17 | Cargo configs, tokio async, web frameworks, serialization, macros, unsafe blocks, database ORMs |
| Kotlin | 16 | Gradle/Maven builds, coroutines & Flow, null-safety (!! usage), Kotest/MockK, Spring/Ktor API routes, Exposed/JPA, kotlinx.serialization, Jetpack Compose |
| Java | 12 | Gradle/Maven builds, Spring DI & injection style, JPA/Hibernate & Spring Data, JUnit/AssertJ, Lombok vs records, Spring MVC routes, layering |
| C#/.NET | 12 | .NET SDK & target frameworks, nullable reference types, Microsoft.Extensions DI, EF Core, xUnit/NUnit, ASP.NET Core routing |
| Ruby | 9 | Bundler & Rails vs gem layout, ActiveRecord & migrations, RSpec/Minitest, RuboCop |
| PHP | 8 | Composer, Laravel vs Symfony vs library, Eloquent/Doctrine, PHPUnit/Pest, route detection, PHP CS Fixer |
| Swift | 7 | SwiftPM products (library vs app), SwiftUI/UIKit/Vapor routes, XCTest & swift-testing, SwiftLint |
| C++ | 7 | CMake/Make/Bazel, header-only vs separated layout, GoogleTest/Catch2/doctest, clang-format |
| Generic | 24 | GitHub workflows, pre-commit configuration, git hooks, Docker/Kubernetes files, repository layout |
For the full list of convention IDs, see the Convention ID Reference.
📊 Output Formats & Reports
Scanned results are written to the .conventions/ folder in multiple formats:
| Format | Output File | Description |
|---|---|---|
| json | conventions.raw.json |
Raw, machine-readable JSON representing all rules, stats, and evidence code blocks. |
| markdown | conventions.md |
Human-readable Markdown summary of all detected rules. |
| review | conventions-review.md |
Audit report with scores (1-5), grouped by rating, with prioritized improvement actions. |
| html | conventions.html |
Interactive dashboard with Light/Dark mode, filtering, search, and expandable evidence code blocks. |
| sarif | conventions.sarif |
Static Analysis Results Interchange Format for GitHub Code Scanning and CI uploads. |
📈 Rating Scale
Each convention is evaluated and rated on a 1-5 scale:
- 5 - Excellent: Best practices followed consistently throughout the codebase.
- 4 - Good: Strong alignment with minor improvements possible.
- 3 - Average: Room for improvement; inconsistent usage.
- 2 - Below Average: Significant improvements needed.
- 1 - Poor: Major style or code architecture issues detected.
⚙️ Configuration
Create a .conventionsrc.json configuration file in your repository root to customize behavior:
{
"languages": ["python", "node"],
"max_files": 1000,
"disabled_detectors": ["python_graphql"],
"disabled_rules": ["python.conventions.graphql"],
"output_formats": ["json", "markdown", "review", "html"],
"exclude_patterns": ["**/generated/**", "**/vendor/**"],
"plugin_paths": ["./custom_rules.py"],
"min_score": 3.5
}
🚯 Automatic Exclusions
The CLI respects .gitignore rules and automatically excludes:
node_modules/,vendor/,site-packages/venv/,.venv/,.tox/,.nox/__pycache__/,.pytest_cache/,.mypy_cache/,.ruff_cache/.git/,.svn/,.hg/- Build outputs (
build/,dist/,eggs/) - Examples and docs (
docs/,examples/,tutorials/,demo/,samples/)
🛡️ CI/CD Integration
Use the CLI as a pull request quality gate. When min_score is defined, the scan will fail (exit code 2) if the project-wide average falls below your threshold.
GitHub Actions Workflow:
# .github/workflows/conventions.yml
name: Check Conventions
on: [push, pull_request]
jobs:
conventions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install klaussy-repo-conventions
- run: conventions discover
- run: cat .conventions/conventions-review.md
🔌 Plugin System
Extend the scanner by creating custom Python detectors and rating rules:
# custom_rules.py
from conventions.detectors.base import BaseDetector, DetectorContext, DetectorResult
from conventions.ratings import RatingRule
class MyCustomDetector(BaseDetector):
name = "my_custom_detector"
description = "Detects my custom convention"
languages = {"python"}
def detect(self, ctx: DetectorContext) -> DetectorResult:
result = DetectorResult()
# Custom detection logic
return result
# Required exports
DETECTORS = [MyCustomDetector]
# Optional: custom rating rules
RATING_RULES = {
"custom.my_rule": RatingRule(
score_func=lambda r: 5 if r.stats.get("metric", 0) > 0.8 else 3,
reason_func=lambda r, s: f"Custom metric: {r.stats.get('metric', 0):.0%}",
suggestion_func=lambda r, s: None if s >= 5 else "Improve the custom metric.",
),
}
Add the plugin path to your .conventionsrc.json:
{
"plugin_paths": ["./custom_rules.py"]
}
🤝 Contributing
Contributions are welcome! To add support for new conventions:
- Create a new detector in
src/conventions/detectors/<language>/ - Register it using
@DetectorRegistry.register - Add rating rules in
src/conventions/ratings.py - Add tests in
tests/
⚖️ License & Governance
- License: MIT
- Governance:
klaussy-repo-conventionsis an open-source project owned and maintained by Dovatech LLC (founded and owned by Stephanie Dover).
Release files for klaussy-repo-conventions 1.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| klaussy_repo_conventions-1.7.0.tar.gz | 383.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| klaussy_repo_conventions-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 887.2 kB
Release files / klaussy_repo_conventions-1.7.0.tar.gz
| Download URL | klaussy_repo_conventions-1.7.0.tar.gz |
|---|---|
| Size | 383.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
892a38fb98afcc6acb5c9d6a129cc983302a787a5f86000152f23cdd81ddbba6
|
|
BLAKE2b-256 checksum How to use checksums |
a049e95035ef387c99eeb5a94b775fd5aae02d04f31d7f1884d261d19f354ca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency logRelease files / klaussy_repo_conventions-1.7.0-py3-none-any.whl
| Download URL | klaussy_repo_conventions-1.7.0-py3-none-any.whl |
|---|---|
| Size | 503.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a36515d199877eac2f7b0d7eb0ae168aafbc003240fb8086c61e3e741456dea
|
|
BLAKE2b-256 checksum How to use checksums |
c9957333348f48dc6caa1a4093cf257bebf2961e74f32b8d950e217293423c91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency log