From f54cacd6cba4ed369f8b80be3b4a4660163dcec2 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Sat, 20 Jun 2026 14:13:22 -0500 Subject: [PATCH] ruffage --- src/personal_mcp/catalog/__init__.py | 16 ++++++++-------- src/personal_mcp/catalog/server.py | 4 +++- src/personal_mcp/skills/document_loader.py | 11 +++++++---- src/personal_mcp/web/docs_mount.py | 4 +++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/personal_mcp/catalog/__init__.py b/src/personal_mcp/catalog/__init__.py index 2f60d56..2ca9e8a 100644 --- a/src/personal_mcp/catalog/__init__.py +++ b/src/personal_mcp/catalog/__init__.py @@ -1,13 +1,13 @@ from personal_mcp.catalog.server import ( - build_skill_detail_payload, - build_skills_index_payload, - get_pattern_by_id_payload, - search_patterns_payload, + build_skill_detail_payload, + build_skills_index_payload, + get_pattern_by_id_payload, + search_patterns_payload, ) __all__ = [ - "build_skill_detail_payload", - "build_skills_index_payload", - "get_pattern_by_id_payload", - "search_patterns_payload", + "build_skill_detail_payload", + "build_skills_index_payload", + "get_pattern_by_id_payload", + "search_patterns_payload", ] diff --git a/src/personal_mcp/catalog/server.py b/src/personal_mcp/catalog/server.py index 9797c90..64fe645 100644 --- a/src/personal_mcp/catalog/server.py +++ b/src/personal_mcp/catalog/server.py @@ -87,7 +87,9 @@ def build_skills_index_payload( except ValueError as exc: raise ValueError("cursor must be an integer string") from exc - ordered = [registry.skills_by_id[skill_id] for skill_id in registry.skills_in_load_order] + ordered = [ + registry.skills_by_id[skill_id] for skill_id in registry.skills_in_load_order + ] matches = [ skill for skill in ordered diff --git a/src/personal_mcp/skills/document_loader.py b/src/personal_mcp/skills/document_loader.py index b23fc8d..fff8470 100644 --- a/src/personal_mcp/skills/document_loader.py +++ b/src/personal_mcp/skills/document_loader.py @@ -138,7 +138,9 @@ class SkillFrontmatter(BaseModel): @classmethod def validate_name(cls, value: str) -> str: if not SKILL_ID_RE.fullmatch(value): - raise ValueError("name must be lowercase kebab-case and start with a letter") + raise ValueError( + "name must be lowercase kebab-case and start with a letter" + ) if "anthropic" in value or "claude" in value: raise ValueError("name must not contain reserved words anthropic or claude") return value @@ -188,8 +190,7 @@ class DocsRegistry: docs_markdown_by_path: dict[str, str] docs_markdown_path_index: tuple[str, ...] tag_to_skill_ids: dict[str, tuple[str, ...]] - capability_to_skill_ids: dict[str, tuple[str, ...] - ] + capability_to_skill_ids: dict[str, tuple[str, ...]] def _parse_frontmatter(markdown: str, *, path: str) -> tuple[dict[str, Any], str]: @@ -234,7 +235,9 @@ def _walk_markdown( return results -def _validate_skill_frontmatter(raw: dict[str, Any], *, skill_dir_name: str) -> SkillFrontmatter: +def _validate_skill_frontmatter( + raw: dict[str, Any], *, skill_dir_name: str +) -> SkillFrontmatter: model = SkillFrontmatter.model_validate(raw) if model.name != skill_dir_name: raise ValueError("frontmatter name must exactly match skill directory name") diff --git a/src/personal_mcp/web/docs_mount.py b/src/personal_mcp/web/docs_mount.py index 754f4a4..f35d516 100644 --- a/src/personal_mcp/web/docs_mount.py +++ b/src/personal_mcp/web/docs_mount.py @@ -11,7 +11,9 @@ def mount_docs_static(app: FastAPI, *, docs_route: str, site_dir: Path) -> None: docs_root = f"{normalized_route}/" async def redirect_to_docs_root() -> RedirectResponse: - return RedirectResponse(url=docs_root, status_code=status.HTTP_307_TEMPORARY_REDIRECT) + return RedirectResponse( + url=docs_root, status_code=status.HTTP_307_TEMPORARY_REDIRECT + ) app.add_api_route( normalized_route,