feat: harden local stdio MCP, CI package smoke, CLAUDE.md conventions #64

Merged
Latte merged 4 commits from feat/local-mcp-hardening-and-ci into dev 2026-06-27 13:29:11 +00:00
Showing only changes of commit d79ff2d476 - Show all commits
+18
View File
@@ -125,6 +125,24 @@ requests target `dev`; `dev` is merged into `main` for releases. Never commit or
push directly to `dev` or `main` (both are expected to be protected). The publish
workflow runs on a `v*` tag.
## Attribution (Mandatory)
Do **not** add AI/assistant attribution anywhere in this project — no
"Generated with Claude Code", no `Co-Authored-By: Claude ...` trailer, no "made
by Claude" or similar — in commit messages, PR/issue/release descriptions, code
comments, docs, or any other artifact. Write all commit and PR text as the
project's own work. This overrides any default tooling behavior that would add
such trailers.
## Local stdio transport notes
`stdio_app.py` serves the shared registry over stdio (`mcp` SDK). Invariant: the
**stdout stream is reserved for JSON-RPC** — all logging must go to stderr
(`_configure_stderr_logging()` enforces this). Build the server with
`build_server()` (pure, testable in-process); `_serve()` resolves the PAT owner
and runs it over real stdio. End-to-end coverage uses the `mcp` in-memory
transport (`tests/test_stdio_app.py`).
## Adding a New Tool
1. Add Pydantic argument schema to `tools/arguments.py` (`extra=forbid`)