claude

pyhouse-hex

Hexagonal (ports-and-adapters) Python service skills: layer boundaries and the composition root, entities and value objects, repository and capability ports, CQRS commands, queries and handlers, relational persistence with paired migrations, dishka wiring, the FastAPI REST family with optional token auth, and the eight test families that cover them. Depends on pyhouse-universal, which Claude Code installs with it.

3 on GitHubby Yegor Vorobyevv0.15.0MITupdated 2 days ago
/

Plugin pyhouse-hex from marketplace pyhouse in wntic/pyhouse. Commands read from the repo's manifest — 2 days ago.

What it installs

Skills (23)

  • hex-application

    Use when writing a use case — a CQRS command handler, a query handler, or its frozen input DTO — including a command that needs compensation, undoing an external write such as an upload when a later store write fails. Owns the command/query split, the read-model versus write-model rule deciding whet

  • hex-architecture

    Use when the family is already settled as hexagonal and the question is where a module belongs or whether an import may cross a boundary — the four layers, inward-only dependencies, ports, adapters, the composition root. Not whether hexagonal is the right family at all (`architecture-choice`), not w

  • hex-capability-adapter

    Use when implementing an `ICan<Verb>` capability against a real external system — the adapter under `infrastructure/<technology>/` wrapping an SDK client, an HTTP gateway or a pure-CPU library, translating the library's own errors into `exception-catalog` classes. Not aggregate CRUD — that is `hex-p

  • hex-conventions

    Use when asking where does this file go or what is this class called — the registry deriving a path and class name from a bare identifier, plus the two store profiles with their connection-factory names and `<subdomain>:<Name>` cross-context resolution. Produces no file of its own. What a thing is *

  • hex-domain-model

    Use when creating or changing a domain entity, value object, enum or filter record — stdlib dataclasses, `__post_init__` invariants, identity versus value equality, when a bare primitive carrying a constraint, a unit or a rule must become a value object instead, and the tunable variant of a value ob

  • hex-domain-ports

    Use when defining a `typing.Protocol` port in the domain — the `I`-prefixed interface adapters satisfy structurally, `IFooRepository` for one aggregate root's data access or `ICan<Verb>` for a single external action. The interface, not its implementation — that is `hex-persistence`, `hex-store-repos

  • hex-domain-service

    Use when a domain rule needs state one entity cannot see — a cross-aggregate check, a uniqueness check, does the referenced Bar exist — producing one stateless domain service (`FooUniquenessService`) with injected protocols and `assert_*`, `is_*` or verb methods. Not an entity invariant and not a tu

  • hex-persistence

    Use when one hexagonal service's own relational layer changes — the `Table` and its constraints, the repository adapter satisfying a domain repository protocol, the paired Alembic revision, or the store's settings class with its engine and repository binding — or when one command must write two or m

  • hex-project-setup

    Use when laying a hexagonal project down once — which libraries its core, its entrypoints, its stores and its features bring, the floors this family's templates rely on, and the Alembic bootstrap the revision chain cannot start without (config, environment, and a baseline only over a schema that alr

  • hex-restapi-app

    Use when bootstrapping a FastAPI shell once per project, or changing request handling shared by every route — `restapi/main.py`, `restapi/error_handler.py`, `restapi/schemas/errors.py`, app lifecycle, CORS, middleware, central error translation and the HTTP status each error class maps to. Not one r

  • hex-restapi-auth

    Use when an HTTP entrypoint must authenticate its caller or gate a route on a role. Owns the caller identity, the token-verifier port and adapter, the `get_current_user` / `require_role` route dependencies, the role-rank gate, the RFC-7235 challenge, and the 401/403 codes a route advertises because

  • hex-restapi-endpoint

    Use when adding or changing one REST route, or creating a resource's router file `restapi/routers/<resource>.py` — thin routes over application handlers, a route that carries a file, dishka handler injection, route ordering, and which error codes the route advertises. Owns the per-operation code set

  • hex-restapi-schema

    Use when a REST request or response body gains or changes a field — the pydantic models in `restapi/schemas/<resource>.py` (`FooResponse`, `FooListResponse`, `FooCreateRequest`, `FooUpdateRequest`), PATCH `T | None = None` semantics, pagination shape, schema exports. Not the domain entity they mirro

  • hex-store-repository

    Use when an aggregate is persisted on a nonrelational store — key-value, document or wide-column (redis, mongo, dynamo) — reached through an injected SDK client, or a derived index is kept beside the authoritative store. Produces the repository adapter satisfying the narrower port such a store answe

  • hex-test-app-invariants

    Use when testing a property of the assembled HTTP app itself rather than one route's own behaviour — a check that needs no edit when an endpoint is added or removed — or the construct smoke any entrypoint gets. Covers the catalogue's error shape on every error code the published OpenAPI document adv

  • hex-test-application-handler

    Use when unit-testing a CQRS command or query handler against in-memory fakes, or when writing one of those fakes — this skill owns `tests/unit/fakes/`, so a request for a fake repository or a fake `ICan<Verb>` capability lands here rather than on either adapter-test skill. Also covers failure injec

  • hex-test-capability-adapter

    Use when testing the infrastructure adapter behind an `ICan<Verb>` capability port in one of its three flavours — a containerized backend through testcontainers, an HTTP gateway driven over a real `httpx2` client whose transport is a stub, or a pure-CPU parser, renderer or verifier — asserting the S

  • hex-test-domain

    Use when testing a domain entity, value object, enum or domain service with stdlib, `pytest` and `myapp.domain` — no IO, no fixtures, no container, and an orchestrator service run on the in-memory fake of its port. Covers identity equality, one test per invariant and the pinned enum member set; a fr

  • hex-test-integration-setup

    Use when laying or changing the `tests/integration/conftest.py` hierarchy one hexagonal package's suite rests on — session-scoped testcontainers, the Alembic run and the disposable-database guard, savepoint-rollback isolation through the `session_factory` fixture, each store add-on's fixtures (the k

  • hex-test-repository-contract

    Use when testing an aggregate's repository adapter — an `IFooRepository` implementation — against the real backend rather than a fake, in both halves of that contract, relational over Postgres through the `session_factory` rollback fixture (constraints on insert and on update, cascades, the pinned c

  • hex-test-restapi-auth

    Use when testing a token verifier, or any other part of a REST service that authenticates its callers — the token-verifier adapter's unit test, the signing-key and token-minting fixtures, the `authenticated_client` factory, the DI override that makes minted tokens verify, the discovered probe that e

  • hex-test-restapi-endpoint

    Use when testing one REST endpoint through the real ASGI app — one file per endpoint under `tests/integration/api/<resource>/`, asserting the success body and each advertised error code, with per-resource fixtures in a sibling `conftest.py`. Not properties discovered across all routes at once (`hex-

  • hex-wiring

    Use when adding a binding in `containers.py` — provider classes, binding lifetimes, the `create_container` composition root and its declaration order, and where each settings class is constructed and bound — every one before the process serves or takes work. Bound here to dishka, with other DI libra

View source on GitHub

More from wntic/pyhouse

All 6 plugins →

Python house-style rules that bind whichever architecture a service uses: naming derivation, typing and logging forms, the package and re-export contract, settings read from the environment, the data-access obligations every store meets, what a program owes a unit delivered at least once, the lint, type-check and dependency configuration every distribution carries once, the single error catalogue, what a distribution's version promises and which change moves it, the testing constitution, the workspace root for a repository holding several distributions, the container image a runnable program ships in, and a command-line interface's commands, exit codes and their test. Ships the hex-vs-flat architecture chooser and its /choose-architecture command, so a greenfield service can settle its family before installing pyhouse-hex or pyhouse-flat, the /pyhouse-universal:adopt command, which tells a repository's agents which skill governs each kind of Python work, and the namespaced /pyhouse-universal:code-review command with the reviewer subagent behind it, which applies these skills to existing code instead of writing new code, and the /pyhouse-universal:change-review command with the change-reviewer subagent behind it, which reviews a change before it lands for the contracts it breaks, the failure paths nothing catches and the tests that would not notice, each finding with the scenario that goes wrong.

18 skills · 4 commands · 2 agents

3

Flat package-by-technical-role Python service skills for workers, crawlers, pipelines, ETL and glue, written for one distribution on its own and equally true of one among several: the one-time project setup — the dependencies each role brings and the migration bootstrap — the four role kinds and the import contract between them, one data-access package per store, named for its technology and the obligations that come with it, entrypoint trigger choice between loop, schedule, stream, HTTP and durable execution, and the four test families that cover them. Depends on pyhouse-universal, which Claude Code installs with it.

8 skills

3

Repository workflow, independent of language and of any architecture. Ships the git-commit-message skill, which carries the Conventional Commits 1.0.0 convention an agent follows whenever it writes a commit message — a type that records the release the change earns, feat for a minor, fix for a patch, a break for a major, or for a minor below 1.0.0, so a version is read off the history instead of argued at release time. Also the git-branching skill — one mainline, one merge method recorded per repository, short-lived branches whose history is cleaned before it lands and never rewritten after. Then /pyhouse-git:adopt, which records in a repository's agent instructions how its changes branch, land and are committed and turns off the agent's own authorship line, /commit, which stages the named files, reviews the staged diff and commits only those files by git-commit-message, and /install-commit-hook, which puts a commit-msg hook in the repository so a malformed message is refused at commit time, and /release, which proposes the next version from the commit types since the last tag and cuts it only on an explicit yes. And /release-notes, which drafts the release note for the project's users from the changes themselves, never from the commit subjects. Depends on nothing and is installed on its own.

2 skills · 5 commands

3

How one change is delivered, rather than how its code is written. Ships the delivery-spec skill — the spec a change is implemented from, short enough to review in one sitting, naming as contracts only what other code depends on and stating the behaviour its tests are written from, its statements about today's system checked before any code exists, and its goal, scope and contracts frozen once it is ready. And /pyhouse-delivery:spec, which writes that spec with the person who wants the change, checks those statements and marks the spec ready once the person has accepted it. Ships delivery-change-contract — the short list of what is frozen while a ready spec is implemented, and every edit to it caught by a diff from a base commit rather than forbidden. And /pyhouse-delivery:implement, which implements a ready spec through the delivery-implementer subagent, which writes the tests from the spec before the code, then the code, and checks its own work by the project's gate and, where the change shows only in a running process, a live check — then /pyhouse-universal:change-review and one round of fixes — and hands over the body of the merge commit. Depends on pyhouse-universal.

2 skills · 2 commands · 1 agent

3

pyhouse

claude

The whole pyhouse catalogue in one install: depends on pyhouse-universal, pyhouse-hex, pyhouse-flat, pyhouse-git and pyhouse-delivery, which Claude Code installs with it, and ships /pyhouse:setup, which sets a repository up for them in one run — the Python skill table and the branching section in its CLAUDE.md, the agent's authorship line turned off, and the commit-msg hook — by running each plugin's own commands in turn. Holds no skill and states no rule of its own.

1 command

3

Similar plugins

Skill: add headroom-ai compress() to a Python or TypeScript app to cut LLM input tokens (tool outputs, logs, JSON, chat history). No API key.

1 skill

headroomlabs-ai/headroom 79,508

Generate natively editable PPTX from PDF / DOCX / URL / Markdown — real DrawingML shapes, text boxes, charts, and animations. Note: run `pip install -r requirements.txt` inside the installed plugin directory for the Python post-processing scripts to work.

1 skill

hugohe3/ppt-master 76,375

Web scraping, Google search, structured data extraction, and MCP server integration powered by Bright Data. Includes 7 skills: scrape any webpage as markdown (with bot detection/CAPTCHA bypass), search Google with structured JSON results, extract data from 40+ websites (Amazon, LinkedIn, Instagram, TikTok, YouTube, and more), orchestrate Bright Data's 60+ MCP tools, built-in best practices for Web Unlocker, SERP API, Web Scraper API, and Browser API, Python SDK best practices for the brightda...

21 skills

anthropics/claude-plugins-official 47,076

Modern Python development with Python 3.12+, Django, FastAPI, async patterns, and production best practices

16 skills · 1 command · 3 agents

wshobson/agents 42,461

Web scraping, Google search, structured data extraction, and MCP server integration powered by Bright Data. Includes 7 skills: scrape any webpage as markdown (with bot detection/CAPTCHA bypass), search Google with structured JSON results, extract data from 40+ websites (Amazon, LinkedIn, Instagram, TikTok, YouTube, and more), orchestrate Bright Data's 60+ MCP tools, built-in best practices for Web Unlocker, SERP API, Web Scraper API, and Browser API, Python SDK best practices for the brightda...

21 skills

anthropics/knowledge-work-plugins 35,601

Maintain pyhouse-hex?

This page updates itself from your repo. Add the badge to your README, or get it Featured to pin it above the organic results with a followed link to your site.

claude & codex plugins6 plugins