LICENSE
README.md
pyproject.toml
src/claudelint/__init__.py
src/skillsaw/__init__.py
src/skillsaw/__main__.py
src/skillsaw/baseline.py
src/skillsaw/config.py
src/skillsaw/context.py
src/skillsaw/grade.py
src/skillsaw/lint_target.py
src/skillsaw/lint_tree.py
src/skillsaw/linter.py
src/skillsaw/markdown_doc.py
src/skillsaw/rule.py
src/skillsaw/rule_docs.py
src/skillsaw/suppression.py
src/skillsaw.egg-info/PKG-INFO
src/skillsaw.egg-info/SOURCES.txt
src/skillsaw.egg-info/dependency_links.txt
src/skillsaw.egg-info/entry_points.txt
src/skillsaw.egg-info/requires.txt
src/skillsaw.egg-info/top_level.txt
src/skillsaw/docs/__init__.py
src/skillsaw/docs/extractor.py
src/skillsaw/docs/html_renderer.py
src/skillsaw/docs/markdown_renderer.py
src/skillsaw/docs/models.py
src/skillsaw/formatters/__init__.py
src/skillsaw/formatters/code_climate.py
src/skillsaw/formatters/html.py
src/skillsaw/formatters/json_fmt.py
src/skillsaw/formatters/sarif.py
src/skillsaw/formatters/text.py
src/skillsaw/llm/__init__.py
src/skillsaw/llm/_litellm.py
src/skillsaw/llm/engine.py
src/skillsaw/llm/tools.py
src/skillsaw/marketplace/__init__.py
src/skillsaw/marketplace/add.py
src/skillsaw/marketplace/branding.py
src/skillsaw/marketplace/cli.py
src/skillsaw/marketplace/init.py
src/skillsaw/marketplace/templates/__init__.py
src/skillsaw/marketplace/templates/claude-code/agent.md
src/skillsaw/marketplace/templates/claude-code/command.md
src/skillsaw/marketplace/templates/claude-code/docs_readme.md
src/skillsaw/marketplace/templates/claude-code/gitignore
src/skillsaw/marketplace/templates/claude-code/index.html
src/skillsaw/marketplace/templates/claude-code/lint.yml
src/skillsaw/marketplace/templates/claude-code/makefile
src/skillsaw/marketplace/templates/claude-code/marketplace.json
src/skillsaw/marketplace/templates/claude-code/marketplace_readme.md
src/skillsaw/marketplace/templates/claude-code/plugin.json
src/skillsaw/marketplace/templates/claude-code/readme.md
src/skillsaw/marketplace/templates/claude-code/settings.json
src/skillsaw/marketplace/templates/claude-code/skill.md
src/skillsaw/rules/builtin/__init__.py
src/skillsaw/rules/builtin/command_format.py
src/skillsaw/rules/builtin/content_analysis.py
src/skillsaw/rules/builtin/content_rules.py
src/skillsaw/rules/builtin/instruction_files.py
src/skillsaw/rules/builtin/plugin_structure.py
src/skillsaw/rules/builtin/utils.py
src/skillsaw/rules/builtin/agents/__init__.py
src/skillsaw/rules/builtin/agents/frontmatter.py
src/skillsaw/rules/builtin/agentskills/__init__.py
src/skillsaw/rules/builtin/agentskills/_helpers.py
src/skillsaw/rules/builtin/agentskills/description.py
src/skillsaw/rules/builtin/agentskills/evals.py
src/skillsaw/rules/builtin/agentskills/evals_required.py
src/skillsaw/rules/builtin/agentskills/name.py
src/skillsaw/rules/builtin/agentskills/rename_refs.py
src/skillsaw/rules/builtin/agentskills/structure.py
src/skillsaw/rules/builtin/agentskills/valid.py
src/skillsaw/rules/builtin/apm/__init__.py
src/skillsaw/rules/builtin/apm/_helpers.py
src/skillsaw/rules/builtin/apm/structure_valid.py
src/skillsaw/rules/builtin/apm/yaml_valid.py
src/skillsaw/rules/builtin/coderabbit/__init__.py
src/skillsaw/rules/builtin/coderabbit/yaml_valid.py
src/skillsaw/rules/builtin/commands/__init__.py
src/skillsaw/rules/builtin/commands/frontmatter.py
src/skillsaw/rules/builtin/commands/name_format.py
src/skillsaw/rules/builtin/commands/naming.py
src/skillsaw/rules/builtin/commands/sections.py
src/skillsaw/rules/builtin/content/__init__.py
src/skillsaw/rules/builtin/content/actionability_score.py
src/skillsaw/rules/builtin/content/banned_references.py
src/skillsaw/rules/builtin/content/broken_internal_reference.py
src/skillsaw/rules/builtin/content/cognitive_chunks.py
src/skillsaw/rules/builtin/content/contradiction.py
src/skillsaw/rules/builtin/content/critical_position.py
src/skillsaw/rules/builtin/content/embedded_secrets.py
src/skillsaw/rules/builtin/content/hook_candidate.py
src/skillsaw/rules/builtin/content/inconsistent_terminology.py
src/skillsaw/rules/builtin/content/instruction_budget.py
src/skillsaw/rules/builtin/content/negative_only.py
src/skillsaw/rules/builtin/content/placeholder_text.py
src/skillsaw/rules/builtin/content/redundant_with_tooling.py
src/skillsaw/rules/builtin/content/section_length.py
src/skillsaw/rules/builtin/content/tautological.py
src/skillsaw/rules/builtin/content/unlinked_internal_reference.py
src/skillsaw/rules/builtin/content/weak_language.py
src/skillsaw/rules/builtin/context_budget/__init__.py
src/skillsaw/rules/builtin/context_budget/budget.py
src/skillsaw/rules/builtin/hooks/__init__.py
src/skillsaw/rules/builtin/hooks/dangerous.py
src/skillsaw/rules/builtin/hooks/json_valid.py
src/skillsaw/rules/builtin/hooks/prohibited.py
src/skillsaw/rules/builtin/instructions/__init__.py
src/skillsaw/rules/builtin/instructions/_helpers.py
src/skillsaw/rules/builtin/instructions/file_valid.py
src/skillsaw/rules/builtin/instructions/imports_valid.py
src/skillsaw/rules/builtin/marketplace/__init__.py
src/skillsaw/rules/builtin/marketplace/json_valid.py
src/skillsaw/rules/builtin/marketplace/registration.py
src/skillsaw/rules/builtin/mcp/__init__.py
src/skillsaw/rules/builtin/mcp/prohibited.py
src/skillsaw/rules/builtin/mcp/valid_json.py
src/skillsaw/rules/builtin/openclaw/__init__.py
src/skillsaw/rules/builtin/openclaw/metadata.py
src/skillsaw/rules/builtin/plugins/__init__.py
src/skillsaw/rules/builtin/plugins/_helpers.py
src/skillsaw/rules/builtin/plugins/json_required.py
src/skillsaw/rules/builtin/plugins/json_valid.py
src/skillsaw/rules/builtin/plugins/naming.py
src/skillsaw/rules/builtin/plugins/readme.py
src/skillsaw/rules/builtin/promptfoo/__init__.py
src/skillsaw/rules/builtin/promptfoo/_helpers.py
src/skillsaw/rules/builtin/promptfoo/assertions.py
src/skillsaw/rules/builtin/promptfoo/metadata.py
src/skillsaw/rules/builtin/promptfoo/valid.py
src/skillsaw/rules/builtin/rules_dir/__init__.py
src/skillsaw/rules/builtin/rules_dir/valid.py
src/skillsaw/rules/builtin/settings/__init__.py
src/skillsaw/rules/builtin/settings/dangerous.py
src/skillsaw/rules/builtin/skills/__init__.py
src/skillsaw/rules/builtin/skills/frontmatter.py
src/skillsaw/rules/docs/content-critical-position.md
src/skillsaw/rules/docs/content-tautological.md
src/skillsaw/rules/docs/content-weak-language.md
src/skillsaw/rules/docs/hooks-dangerous.md
src/skillsaw/rules/docs/skill-frontmatter.md
tests/test_action_review.py
tests/test_agent_rules.py
tests/test_agentskill_rules.py
tests/test_apm_rules.py
tests/test_autofix.py
tests/test_baseline.py
tests/test_benchmark.py
tests/test_coderabbit_rules.py
tests/test_config.py
tests/test_content_analysis.py
tests/test_content_rules.py
tests/test_context.py
tests/test_context_budget_rules.py
tests/test_custom_rules.py
tests/test_docs.py
tests/test_explain.py
tests/test_formatters.py
tests/test_grade.py
tests/test_hook_rules.py
tests/test_instruction_file_rules.py
tests/test_integration.py
tests/test_json_null_handling.py
tests/test_lint_tree.py
tests/test_linter.py
tests/test_llm.py
tests/test_llm_integration.py
tests/test_markdown_doc.py
tests/test_marketplace.py
tests/test_marketplace_integration.py
tests/test_mcp_rules.py
tests/test_openclaw_rules.py
tests/test_parallel.py
tests/test_path_resolution.py
tests/test_perf_helpers.py
tests/test_pre_commit_hooks.py
tests/test_prompt_dogfood.py
tests/test_promptfoo_rules.py
tests/test_rules.py
tests/test_rules_dir.py
tests/test_settings_rules.py
tests/test_suppression.py
tests/test_utils.py
tests/test_yaml_line_numbers_integration.py