Stop tracking personal workflow artifacts at repo root, add CI and MIT license, align README and agent skills with artifacts/ defaults, and enable Ruff in dev/CI so releases are verifiable without local-only runs. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
Repository Guidelines
Project Structure & Module Organization
- Core package lives in
src/vlm/. - CLI entrypoint is
src/vlm/cli.py(vlmconsole script). Shared CLI helpers live incli_helpers.py. Command logic is incommands/(scan, parse, enrich, analyze, plan, execute, review_plan, report, quarantine_cmd, state_cmd, config_cmd). - Functional modules by concern: scanning (
scanner.py), parsing (parser.py), enrichment (enrichment.py,cache.py,providers/), analysis/planning/execution (analysis.py,planner.py,executor.py), I/O helpers (io.py), utilities (utils.py), state/reporting/logging (state.py,reports.py,logging_config.py), config (config.py), models (models.py). - Tests live in
tests/and mirror feature areas (e.g.tests/test_scanner.py,tests/test_cli_state.py,tests/test_enrichment.py). - Project metadata and tool config are in
pyproject.toml.
Build, Test, and Development Commands
uv pip install -e .installs the package in editable mode.uv pip install -e ".[dev]"installs dev dependencies (pytest,hypothesis,pytest-cov,ruff).uv run pytest -qruns the full test suite.uv run pytest tests/test_logging.pyruns a targeted test file during iteration.uv run ruff check src testsruns the linter (also in CI).vlm --helpverifies CLI startup and available commands.
Coding Style & Naming Conventions
- Use Python 3.10+ idioms, 4-space indentation, and PEP 8 naming.
- Modules/functions/variables:
snake_case; classes:PascalCase; constants:UPPER_SNAKE_CASE. - Keep modules focused on a single responsibility; prefer small pure helpers in domain modules.
- Add type hints for public functions and non-trivial internal APIs.
- Use absolute imports in
src/vlm/:from vlm.module import ...(avoid new relative imports). - Ruff (
E,F,I) is configured inpyproject.toml; CI runsruff check src tests.
Testing Guidelines
- Framework:
pytest; property-based tests usehypothesis. - Naming (enforced in config): files
test_*.py, functionstest_*, classesTest*. - Add/extend tests with each behavior change, including CLI error paths and edge cases.
- Prefer narrow unit tests for module logic plus targeted CLI integration tests via
CliRunner.
Commit & Pull Request Guidelines
- Current history is minimal; use clear, imperative commit subjects (example:
fix logging fallback for unwritable log dir). - Keep commits focused; avoid mixing refactors and behavior changes unless tightly coupled.
- PRs should include: summary, rationale, test evidence (
pytestoutput), and any CLI-visible output changes. - Link related issues/tasks when applicable and call out config or migration impacts.
Security & Configuration Tips
- Do not commit local paths, personal media metadata, or generated state/log artifacts.
- Validate config changes against
vlm --helpand at least one end-to-end CLI flow before merging.
Documentation baseline
- Updated to reflect release 0.2.0 baseline as of 2026-06-01.
- Canonical release notes are tracked in
CHANGELOG.md. - Default workflow artifacts:
artifacts/(do not commit generated CSV/JSON).