vectorclaw-mcp 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. vectorclaw_mcp-1.0.0/.devcontainer/Dockerfile +7 -0
  2. vectorclaw_mcp-1.0.0/.devcontainer/devcontainer.json +17 -0
  3. vectorclaw_mcp-1.0.0/.editorconfig +12 -0
  4. vectorclaw_mcp-1.0.0/.gitattributes +7 -0
  5. vectorclaw_mcp-1.0.0/.github/CODEOWNERS +2 -0
  6. vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/bug_report.yml +57 -0
  7. vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  8. vectorclaw_mcp-1.0.0/.github/ISSUE_TEMPLATE/feature_request.yml +33 -0
  9. vectorclaw_mcp-1.0.0/.github/copilot-instructions.md +55 -0
  10. vectorclaw_mcp-1.0.0/.github/dependabot.yml +19 -0
  11. vectorclaw_mcp-1.0.0/.github/pull_request_template.md +17 -0
  12. vectorclaw_mcp-1.0.0/.github/workflows/ci.yml +61 -0
  13. vectorclaw_mcp-1.0.0/.github/workflows/codeql.yml +41 -0
  14. vectorclaw_mcp-1.0.0/.github/workflows/devcontainer-ci.yml +30 -0
  15. vectorclaw_mcp-1.0.0/.github/workflows/release-testpypi.yml +33 -0
  16. vectorclaw_mcp-1.0.0/.github/workflows/release.yml +30 -0
  17. vectorclaw_mcp-1.0.0/.gitignore +21 -0
  18. vectorclaw_mcp-1.0.0/.vscode/settings.json +3 -0
  19. vectorclaw_mcp-1.0.0/CHANGELOG.md +31 -0
  20. vectorclaw_mcp-1.0.0/CODE_OF_CONDUCT.md +55 -0
  21. vectorclaw_mcp-1.0.0/CONTRIBUTING.md +62 -0
  22. vectorclaw_mcp-1.0.0/LICENSE +21 -0
  23. vectorclaw_mcp-1.0.0/PKG-INFO +293 -0
  24. vectorclaw_mcp-1.0.0/README.md +252 -0
  25. vectorclaw_mcp-1.0.0/RELEASE_HANDOFF.md +131 -0
  26. vectorclaw_mcp-1.0.0/ROADMAP.md +256 -0
  27. vectorclaw_mcp-1.0.0/SECURITY.md +28 -0
  28. vectorclaw_mcp-1.0.0/docs/HARDWARE_SMOKE_EMPIRICAL_TEST_TEMPLATE.md +126 -0
  29. vectorclaw_mcp-1.0.0/docs/HARDWARE_SMOKE_LOG.md +201 -0
  30. vectorclaw_mcp-1.0.0/docs/HARDWARE_TEST_PLAYBOOK.md +217 -0
  31. vectorclaw_mcp-1.0.0/docs/HARDWARE_VALIDATION_2026-02-26.md +45 -0
  32. vectorclaw_mcp-1.0.0/docs/MCP_API_REFERENCE.md +477 -0
  33. vectorclaw_mcp-1.0.0/docs/ONBOARDING_QUICKSTART.md +57 -0
  34. vectorclaw_mcp-1.0.0/docs/OPENCLAW_SETUP_SKILL.md +180 -0
  35. vectorclaw_mcp-1.0.0/docs/OPENCLAW_SKILL_PLAN.md +64 -0
  36. vectorclaw_mcp-1.0.0/docs/PRE_RELEASE_CHECKLIST.md +180 -0
  37. vectorclaw_mcp-1.0.0/docs/RELEASE_NOTES_V1_RC_DRAFT.md +47 -0
  38. vectorclaw_mcp-1.0.0/docs/RUNTIME_SUPPORT.md +33 -0
  39. vectorclaw_mcp-1.0.0/docs/SDK_AUDIT_PHASE1.md +438 -0
  40. vectorclaw_mcp-1.0.0/docs/SDK_PATCH_NOTES.md +21 -0
  41. vectorclaw_mcp-1.0.0/docs/SDK_STRATEGY.md +18 -0
  42. vectorclaw_mcp-1.0.0/docs/SDK_TO_MCP_COVERAGE_MATRIX.md +43 -0
  43. vectorclaw_mcp-1.0.0/docs/SECURITY_ARCHITECTURE.md +241 -0
  44. vectorclaw_mcp-1.0.0/docs/SESSION_FORENSICS_LEDGER_2026-02-26_to_2026-02-27.md +69 -0
  45. vectorclaw_mcp-1.0.0/docs/SETUP.md +509 -0
  46. vectorclaw_mcp-1.0.0/docs/TOOL_DOCKING_PREREQUISITES.md +26 -0
  47. vectorclaw_mcp-1.0.0/docs/TROUBLESHOOTING.md +53 -0
  48. vectorclaw_mcp-1.0.0/docs/VECTOR_SDK_REFERENCE.md +1820 -0
  49. vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_IMPLEMENTATION_GUIDE.md +116 -0
  50. vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_MCP_INTEGRATION_PRIORITIES.md +134 -0
  51. vectorclaw_mcp-1.0.0/docs/WIREPOD_SDK_SURFACE_REFERENCE.md +2003 -0
  52. vectorclaw_mcp-1.0.0/docs/research/HARDWARE_SMOKE_REPORT_2026-02-28.md +127 -0
  53. vectorclaw_mcp-1.0.0/docs/research/RELEASE_DECISION_MATRIX_2026-02-28.md +127 -0
  54. vectorclaw_mcp-1.0.0/docs/research/SDK_SEMANTICS_COMPARISON.md +161 -0
  55. vectorclaw_mcp-1.0.0/docs/research/SDK_SEMANTICS_RESEARCH.md +449 -0
  56. vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/capture_144236.jpg +0 -0
  57. vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_153359.jpg +0 -0
  58. vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_mvp_154158.jpg +0 -0
  59. vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/look_verify_154440.jpg +0 -0
  60. vectorclaw_mcp-1.0.0/hardware_test_2026-02-28/test_results.json +27 -0
  61. vectorclaw_mcp-1.0.0/issue-pose-not-fully-functional.md +31 -0
  62. vectorclaw_mcp-1.0.0/pr129_body.md +18 -0
  63. vectorclaw_mcp-1.0.0/pr_planning_body.md +19 -0
  64. vectorclaw_mcp-1.0.0/pyproject.toml +38 -0
  65. vectorclaw_mcp-1.0.0/skill/README.md +36 -0
  66. vectorclaw_mcp-1.0.0/skill/SKILL.md +145 -0
  67. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/__init__.py +3 -0
  68. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/__main__.py +5 -0
  69. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/compat.py +149 -0
  70. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/robot.py +168 -0
  71. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/server.py +115 -0
  72. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/setup_skill.py +533 -0
  73. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tool_registry.py +322 -0
  74. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools.py +35 -0
  75. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_common.py +64 -0
  76. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_motion.py +134 -0
  77. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_perception.py +245 -0
  78. vectorclaw_mcp-1.0.0/src/vectorclaw_mcp/tools_speech.py +11 -0
  79. vectorclaw_mcp-1.0.0/test_hardware_smoke.py +125 -0
  80. vectorclaw_mcp-1.0.0/tests/conftest.py +99 -0
  81. vectorclaw_mcp-1.0.0/tests/test_compat.py +244 -0
  82. vectorclaw_mcp-1.0.0/tests/test_robot_manager.py +252 -0
  83. vectorclaw_mcp-1.0.0/tests/test_server_error_handling.py +63 -0
  84. vectorclaw_mcp-1.0.0/tests/test_setup_skill.py +544 -0
  85. vectorclaw_mcp-1.0.0/tests/test_tool_registry.py +56 -0
  86. vectorclaw_mcp-1.0.0/tests/test_tools_motion.py +267 -0
  87. vectorclaw_mcp-1.0.0/tests/test_tools_perception.py +577 -0
  88. vectorclaw_mcp-1.0.0/uv.lock +1566 -0
@@ -0,0 +1,7 @@
1
+ FROM mcr.microsoft.com/devcontainers/python:3.14-bookworm
2
+
3
+ # Keep image lean but include common build tooling for Python packages.
4
+ RUN rm -f /etc/apt/sources.list.d/yarn.list \
5
+ && apt-get update \
6
+ && apt-get install -y --no-install-recommends build-essential \
7
+ && rm -rf /var/lib/apt/lists/*
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "VectorClaw Dev",
3
+ "build": {
4
+ "dockerfile": "Dockerfile"
5
+ },
6
+ "customizations": {
7
+ "vscode": {
8
+ "extensions": [
9
+ "ms-python.python",
10
+ "ms-python.vscode-pylance",
11
+ "ms-python.debugpy"
12
+ ]
13
+ }
14
+ },
15
+ "postCreateCommand": "python -m pip install --upgrade pip && pip install -e .[dev]",
16
+ "remoteUser": "vscode"
17
+ }
@@ -0,0 +1,12 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ indent_style = space
8
+ indent_size = 4
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
@@ -0,0 +1,7 @@
1
+ # Normalize text files to LF in the repository across all platforms.
2
+ * text=auto eol=lf
3
+
4
+ # Windows-native scripts keep CRLF for compatibility.
5
+ *.bat text eol=crlf
6
+ *.cmd text eol=crlf
7
+ *.ps1 text eol=crlf
@@ -0,0 +1,2 @@
1
+ # Require review requests from both code owners on all changes
2
+ * @danmartinez78 @section9-tachi
@@ -0,0 +1,57 @@
1
+ name: Bug report
2
+ description: Report a reproducible problem in VectorClaw
3
+ title: "bug: "
4
+ labels:
5
+ - bug
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for filing a bug report.
11
+ - type: textarea
12
+ id: summary
13
+ attributes:
14
+ label: Summary
15
+ description: What happened?
16
+ placeholder: Clear and concise description of the issue.
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: steps
21
+ attributes:
22
+ label: Steps to reproduce
23
+ description: Include exact commands and config when possible.
24
+ placeholder: |
25
+ 1. ...
26
+ 2. ...
27
+ 3. ...
28
+ validations:
29
+ required: true
30
+ - type: textarea
31
+ id: expected
32
+ attributes:
33
+ label: Expected behavior
34
+ validations:
35
+ required: true
36
+ - type: textarea
37
+ id: logs
38
+ attributes:
39
+ label: Logs and traces
40
+ description: Paste relevant logs, traceback, or MCP tool output.
41
+ render: shell
42
+ - type: input
43
+ id: version
44
+ attributes:
45
+ label: VectorClaw version
46
+ placeholder: 0.1.0
47
+ - type: dropdown
48
+ id: environment
49
+ attributes:
50
+ label: Environment
51
+ options:
52
+ - Devcontainer
53
+ - Local Linux
54
+ - Local macOS
55
+ - Local Windows
56
+ - GitHub Actions
57
+ - Other
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/danmartinez78/VectorClaw/security/policy
5
+ about: Report vulnerabilities privately according to SECURITY.md.
@@ -0,0 +1,33 @@
1
+ name: Feature request
2
+ description: Suggest an improvement to VectorClaw
3
+ title: "feat: "
4
+ labels:
5
+ - enhancement
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for the suggestion.
11
+ - type: textarea
12
+ id: problem
13
+ attributes:
14
+ label: Problem statement
15
+ description: What user problem are you trying to solve?
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: proposal
20
+ attributes:
21
+ label: Proposed solution
22
+ description: Describe behavior and API impact.
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: alternatives
27
+ attributes:
28
+ label: Alternatives considered
29
+ - type: textarea
30
+ id: risks
31
+ attributes:
32
+ label: Risks and safety considerations
33
+ description: Mention robot movement, hardware assumptions, or runtime safety concerns.
@@ -0,0 +1,55 @@
1
+ # Copilot Instructions for VectorClaw
2
+
3
+ ## Project Context
4
+
5
+ - This repository provides an MCP server that controls Anki Vector robots.
6
+ - Python package source lives under `src/vectorclaw_mcp`.
7
+ - Tests live under `tests/`.
8
+
9
+ ## ⚠️ CRITICAL: SDK Surface Documentation
10
+
11
+ **Before implementing or modifying ANY tool that interacts with the SDK, you MUST:**
12
+
13
+ 1. **Read the authoritative SDK surface reference:** `docs/WIREPOD_SDK_SURFACE_REFERENCE.md`
14
+ 2. **Verify all property names, method signatures, and behavior against this doc**
15
+ 3. **Do NOT assume field names or behavior** — check the reference
16
+
17
+ **During code review, verify:**
18
+ - All SDK property names match the reference doc exactly
19
+ - All method calls use correct signatures from the reference doc
20
+ - All behavior expectations align with SDK documentation
21
+
22
+ **Common mistakes to avoid:**
23
+ - `is_carrying_object` → wrong (use `is_carrying_block`)
24
+ - `is_on_charger_platform` → wrong (use `is_on_charger`)
25
+ - Assuming perception tools work without enabling vision modes
26
+ - Assuming `found_object` in proximity sensor means "distance changed"
27
+
28
+ **When in doubt, search the SDK surface doc first.**
29
+
30
+ ## Contribution Defaults
31
+
32
+ - Keep changes minimal and task-focused.
33
+ - Preserve existing public tool names and API behavior unless explicitly requested.
34
+ - Prefer small pure functions where possible.
35
+ - Add or update tests for changed behavior.
36
+
37
+ ## Safety and Runtime Constraints
38
+
39
+ - Do not execute robot movement by default in tests.
40
+ - Keep hardware-dependent logic isolated behind interfaces that can be mocked.
41
+ - Avoid adding blocking operations to MCP tool handlers.
42
+
43
+ ## Development Workflow
44
+
45
+ - Use the devcontainer setup for consistency.
46
+ - Run `pytest -q` before finalizing.
47
+ - If packaging or dependency metadata changes, validate with `python -m build`.
48
+
49
+ ## Documentation
50
+
51
+ When behavior changes, update docs in:
52
+
53
+ - `README.md` for user-facing usage
54
+ - `docs/SETUP.md` for setup/runtime details
55
+ - `ROADMAP.md` only for planning-level updates
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ open-pull-requests-limit: 10
8
+
9
+ - package-ecosystem: "docker"
10
+ directory: "/.devcontainer"
11
+ schedule:
12
+ interval: "weekly"
13
+ open-pull-requests-limit: 10
14
+
15
+ - package-ecosystem: "github-actions"
16
+ directory: "/"
17
+ schedule:
18
+ interval: "weekly"
19
+ open-pull-requests-limit: 10
@@ -0,0 +1,17 @@
1
+ ## Summary
2
+
3
+ Describe what changed and why.
4
+
5
+ ## Changes
6
+
7
+ -
8
+
9
+ ## Testing
10
+
11
+ - [ ] `pytest -q`
12
+ - [ ] `python -m build` (if packaging/metadata changed)
13
+ - [ ] Manual verification (if robot-dependent behavior changed)
14
+
15
+ ## Notes
16
+
17
+ Include any setup, migration, or follow-up information reviewers should know.
@@ -0,0 +1,61 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ test:
13
+ name: Test (Python ${{ matrix.python-version }}${{ matrix.experimental && ' – experimental' || '' }})
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ include:
19
+ # Primary supported runtime for VectorClaw v1.0 — must pass.
20
+ - python-version: "3.11"
21
+ experimental: false
22
+ # Experimental — failures are informational only and do not block merges.
23
+ - python-version: "3.12"
24
+ experimental: true
25
+ continue-on-error: ${{ matrix.experimental }}
26
+
27
+ steps:
28
+ - name: Checkout
29
+ uses: actions/checkout@v6
30
+
31
+ - name: Set up Python ${{ matrix.python-version }}
32
+ uses: actions/setup-python@v6
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+
36
+ - name: Install package and test dependencies
37
+ run: pip install -e . pytest Pillow
38
+
39
+ - name: Run tests
40
+ run: pytest tests/ -v
41
+
42
+ package:
43
+ name: Build package
44
+ runs-on: ubuntu-latest
45
+ needs: test
46
+
47
+ steps:
48
+ - name: Checkout
49
+ uses: actions/checkout@v6
50
+
51
+ - name: Set up Python
52
+ uses: actions/setup-python@v6
53
+ with:
54
+ python-version: "3.12"
55
+
56
+ - name: Build distribution
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install build twine
60
+ python -m build
61
+ twine check dist/*
@@ -0,0 +1,41 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+ schedule:
11
+ - cron: "20 4 * * 1"
12
+
13
+ jobs:
14
+ analyze:
15
+ name: Analyze (Python)
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ actions: read
19
+ contents: read
20
+ security-events: write
21
+
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ language:
26
+ - python
27
+
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@v6
31
+
32
+ - name: Initialize CodeQL
33
+ uses: github/codeql-action/init@v4
34
+ with:
35
+ languages: ${{ matrix.language }}
36
+
37
+ - name: Autobuild
38
+ uses: github/codeql-action/autobuild@v4
39
+
40
+ - name: Perform CodeQL Analysis
41
+ uses: github/codeql-action/analyze@v4
@@ -0,0 +1,30 @@
1
+ name: Dev Container CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - ".devcontainer/**"
9
+ - ".github/workflows/devcontainer-ci.yml"
10
+ pull_request:
11
+ paths:
12
+ - ".devcontainer/**"
13
+ - ".github/workflows/devcontainer-ci.yml"
14
+ workflow_dispatch:
15
+
16
+ jobs:
17
+ build-devcontainer:
18
+ name: Build Dev Container
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v6
24
+
25
+ - name: Build dev container
26
+ uses: devcontainers/ci@v0.3
27
+ with:
28
+ imageName: ghcr.io/danmartinez78/vectorclaw/devcontainer
29
+ cacheFrom: ghcr.io/danmartinez78/vectorclaw/devcontainer
30
+ push: never
@@ -0,0 +1,33 @@
1
+ name: Release TestPyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ publish-testpypi:
8
+ runs-on: ubuntu-latest
9
+ permissions:
10
+ id-token: write
11
+ contents: read
12
+
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v6
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v6
19
+ with:
20
+ python-version: "3.12"
21
+
22
+ - name: Build distribution
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install build
26
+ python -m build
27
+
28
+ - name: Publish to TestPyPI
29
+ uses: pypa/gh-action-pypi-publish@release/v1
30
+ with:
31
+ repository-url: https://test.pypi.org/legacy/
32
+ skip-existing: true
33
+ verbose: true
@@ -0,0 +1,30 @@
1
+ name: Release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ id-token: write
12
+ contents: read
13
+
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v6
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v6
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Build distribution
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install build
27
+ python -m build
28
+
29
+ - name: Publish to PyPI
30
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,21 @@
1
+ # Python byte-compiled / optimised / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .eggs/
11
+
12
+ # Virtual environments
13
+ .venv/
14
+ venv/
15
+ env/
16
+
17
+ # pytest cache
18
+ .pytest_cache/
19
+
20
+ # mypy
21
+ .mypy_cache/
@@ -0,0 +1,3 @@
1
+ {
2
+ "files.eol": "\n"
3
+ }
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on Keep a Changelog,
6
+ and this project follows Semantic Versioning.
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ - No notable changes yet.
13
+
14
+ ## [0.1.0] - 2026-02-26
15
+
16
+ ### Added
17
+
18
+ - Initial MCP server implementation for Anki Vector control.
19
+ - Core robot tools including speech, animation, drive, camera capture, face display, pose, cube actions, and status.
20
+ - TestPyPI publishing workflow (`.github/workflows/release-testpypi.yml`) for safe release validation.
21
+ - Contributor and governance docs (`CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, PR/issue templates).
22
+ - GitHub automation for CI, devcontainer validation, release publishing, Dependabot, and CodeQL.
23
+
24
+ ### Changed
25
+
26
+ - Repository line-ending policy now enforces LF via `.gitattributes` and `.editorconfig`.
27
+ - Contribution guidance now includes devcontainer-first setup and release process.
28
+
29
+ ### Fixed
30
+
31
+ - Normalized line-ending noise in the repository workflow.
@@ -0,0 +1,55 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment include:
18
+
19
+ - Demonstrating empathy and kindness toward other people
20
+ - Being respectful of differing opinions, viewpoints, and experiences
21
+ - Giving and gracefully accepting constructive feedback
22
+ - Accepting responsibility and apologizing to those affected by our mistakes
23
+ - Focusing on what is best not just for us as individuals, but for the overall community
24
+
25
+ Examples of unacceptable behavior include:
26
+
27
+ - The use of sexualized language or imagery, and sexual attention or advances of any kind
28
+ - Trolling, insulting or derogatory comments, and personal or political attacks
29
+ - Public or private harassment
30
+ - Publishing others' private information, such as a physical or email address, without their explicit permission
31
+ - Other conduct which could reasonably be considered inappropriate in a professional setting
32
+
33
+ ## Enforcement Responsibilities
34
+
35
+ Community leaders are responsible for clarifying and enforcing our standards of
36
+ acceptable behavior and will take appropriate and fair corrective action in
37
+ response to any behavior that they deem inappropriate, threatening, offensive,
38
+ or harmful.
39
+
40
+ ## Scope
41
+
42
+ This Code of Conduct applies within all community spaces and also applies when
43
+ an individual is officially representing the community in public spaces.
44
+
45
+ ## Enforcement
46
+
47
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
48
+ reported to the project maintainers at: **conduct@vectorclaw.dev**
49
+
50
+ All complaints will be reviewed and investigated promptly and fairly.
51
+
52
+ ## Attribution
53
+
54
+ This Code of Conduct is adapted from the Contributor Covenant, version 2.1:
55
+ https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
@@ -0,0 +1,62 @@
1
+ # Contributing to VectorClaw
2
+
3
+ Thanks for helping improve VectorClaw.
4
+
5
+ ## Development Environment
6
+
7
+ Use the devcontainer as the default contributor environment:
8
+
9
+ 1. Open the repository in VS Code.
10
+ 2. Run `Dev Containers: Reopen in Container`.
11
+ 3. Wait for setup to complete (`pip install -e .[dev]`).
12
+
13
+ ## Local Checks
14
+
15
+ Run these before opening a pull request:
16
+
17
+ ```bash
18
+ pytest -q
19
+ python -m build
20
+ ```
21
+
22
+ ## Branch and PR Workflow
23
+
24
+ 1. Create a feature branch from `dev`.
25
+ 2. Keep commits focused and small.
26
+ 3. Open a pull request targeting `dev` with a clear summary and testing notes.
27
+ 4. Ensure GitHub Actions checks pass.
28
+ 5. If behavior changes for users, add an entry under `## [Unreleased]` in `CHANGELOG.md`.
29
+
30
+ ## Testing Guidance
31
+
32
+ - Add or update tests for behavior changes.
33
+ - Prefer deterministic unit tests.
34
+ - If a change cannot be fully tested in CI (for example, physical robot behavior), include manual test steps in the PR.
35
+
36
+ ## Commit Style
37
+
38
+ Prefer concise Conventional Commit style prefixes:
39
+
40
+ - `feat:` new functionality
41
+ - `fix:` bug fixes
42
+ - `docs:` documentation changes
43
+ - `test:` test-only changes
44
+ - `chore:` maintenance and tooling
45
+
46
+ ## Releases
47
+
48
+ Always validate publishing on TestPyPI before publishing to production PyPI.
49
+
50
+ 1. Run `.github/workflows/release-testpypi.yml` from GitHub Actions (`workflow_dispatch`).
51
+ 2. Verify the package can be installed from TestPyPI.
52
+ 3. Publish a GitHub Release to trigger `.github/workflows/release.yml` for real PyPI.
53
+
54
+ Both workflows use Trusted Publishing (OIDC), so configure pending publishers in both PyPI and TestPyPI.
55
+
56
+ Before publishing a release, move relevant `## [Unreleased]` items from `CHANGELOG.md`
57
+ into a new version section and include that summary in GitHub Release notes.
58
+
59
+ ## Community and Security
60
+
61
+ - Follow the project Code of Conduct in `CODE_OF_CONDUCT.md`.
62
+ - Report vulnerabilities via `SECURITY.md` instead of public issues.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 danmartinez78
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.