skills/team/python-feature-slice/SKILL.md
Scaffolds feature-based Python architecture using FastAPI routers, Pydantic v2 models, and a service layer. Python analog of dotnet-vertical-slice — no mediator library, uses FastAPI Depends() for dependency injection and structural CQRS conventions. Use when creating feature-based Python projects, adding FastAPI features, scaffolding service layers, or organizing Python code by feature.
npx skillsauth add michaelalber/ai-toolkit python-feature-sliceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
"Organize around business capabilities, not technical layers." -- Sam Newman, Building Microservices
Feature slice architecture organizes code by business capability, not technical layer: instead of
controllers/, services/, repositories/, you have features/orders/, features/users/ — each a
self-contained vertical slice. In Python with FastAPI, the mediator pattern (FreeMediator in .NET) is
replaced by FastAPI's native Depends(); service classes are injected directly into route handlers.
CQRS separation is a structural/naming convention — OrderReadService vs OrderWriteService — not a
library contract.
Non-Negotiable Constraints:
shared/ domain models.response_model set; no bare dict returns.typing.Protocol for service interfaces so tests run without concrete implementations.async def; no blocking calls in async context (asyncio.to_thread() if unavoidable).Full principle table, KB lookups, discipline rules, anti-patterns, and error recovery live in
references/conventions.md.
DETECT Identify existing structure (flat/layered/feature-based), the FastAPI entry point
(main.py/app.py), the router registration pattern, the ORM setup, and the auth pattern.
(grep APIRouter/include_router; find main.py/app.py.)
SCAFFOLD Create the feature package:
features/<name>/{__init__.py, router.py, service.py, models.py, dependencies.py}
tests/features/<name>/{test_router.py, test_service.py}
(File-by-file content in references/feature-folder-template.md; read/write split in cqrs-conventions.md.)
REGISTER Wire the router: app.include_router(<name>_router, prefix="/api/v1", tags=["<name>"]).
VERIFY uvicorn starts; /docs renders the endpoints; pytest tests/features/<name>/ passes;
grep confirms no cross-feature imports.
Exit criteria: feature package created with thin router, Protocol-typed read/write services,
Pydantic v2 models, and tests; router registered under /api/v1; app starts, /docs renders, tests
pass, and no cross-feature imports exist.
<python-feature-slice-state>
phase: DETECT | SCAFFOLD | REGISTER | VERIFY | COMPLETE
feature_name: [name]
existing_structure: flat | layered | feature-based | unknown
app_entry_point: [file path]
router_registered: true | false
tests_scaffolded: true | false
read_service_created: true | false
write_service_created: true | false
last_action: [description]
next_action: [description]
</python-feature-slice-state>
references/output-templates.md.references/feature-folder-template.md.references/cqrs-conventions.md.references/conventions.md.| Skill | Relationship |
|-------|-------------|
| fastapi-scaffolder | Endpoint-level scaffolding (OpenAPI metadata, security, rate limiting). Use together for full endpoint quality within a feature. |
| alembic-migration-manager | When a feature needs schema changes, use it for the migration lifecycle. |
| python-security-review | After scaffolding, verify the feature's authentication, authorization, and input validation. |
| python-architecture-checklist | Quality gate — run after several features to verify isolation and coupling metrics. |
development
Interviews the user relentlessly about a plan, decision, or idea — one question at a time, each with a recommended answer. Shared engine behind "grill-me" and "grill-with-docs". Use on any "grill" trigger phrase or to stress-test thinking. Do NOT use to build the plan; it ends at shared understanding, not implementation.
testing
Runs a relentless interview to sharpen a plan or design, capturing the decisions as ADRs and a glossary along the way. Use when the user wants to be grilled AND wants the session to leave durable domain documentation behind. Do NOT use for a throwaway stress-test with no artifacts; use grill-me instead.
tools
OWASP-based security review of Vue/TypeScript front-ends. Detects framework (Vite/Vue CLI/Nuxt), entry points, and data flows; scans the OWASP Top 10 (2025) mapped to Vue client-side risks (raw-HTML XSS via v-html, URL/protocol injection, bundled secrets, insecure token storage, dependency CVEs, missing CSP, open redirects, router guard bypass); emits an exec summary plus graded findings. Use to audit Vue for vulnerabilities. Not for architecture grading (vue-architecture-checklist).
tools
Analyzes legacy Vue codebases and produces actionable modernization plans. Primary migration paths include Options API to Composition API, Vue 2 to Vue 3, Vue CLI to Vite, JavaScript to TypeScript, Vue Test Utils/Karma/Mocha to Vitest + Vue Testing Library, legacy Vuex to Pinia, and removed-in-Vue-3 pattern cleanup (filters, event bus, `$listeners`). Does NOT perform the migration — assesses, quantifies risk, and plans.