specx Project Tooling
SkillAI & modelsAdd strict Python project tooling for a specx service. Use when creating or updating `pyproject.toml`, `uv` dependency groups and lock checks, Ruff formatting and linting, mypy strict mode, pytest and HTTPX2 test configuration, Makefile commands, root `AGENTS.md` command guidance, or CI-like local guardrails.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the specx Project Tooling skill
What this skill tells your AI
The instructions your AI receives, as published by maksimzayats/specx in skills/specx-project-tooling/SKILL.md and read by ahel’s review.
Use this skill to make the repository executable and checkable. Read
references/tooling.md before editing tooling files.
Workflow
- Use
specx init <path>for the fresh framework-neutral baseline. It renders the canonicalpyproject.toml, Makefile,.python-version, health core/IOC scaffold, mirrored unit tests, and root guidance, then runsuv add specx diwireanduv add --dev mypy pytest ruffunless--no-syncis passed. Let uv select and record compatible releases rather than rendering dependency floors. - Preserve the repo's Python version if it already exists. For a new repo,
default to Python 3.14. The initializer accepts any
major.minorvalue; do not hardcode a release allowlist that blocks future Python versions. - Use
uvmetadata inpyproject.toml. - For a new project, verify current compatible releases against the official package indexes and documentation before copying reference floors. Preserve intentional versions in an existing repo unless the user asks to upgrade.
- Add runtime dependencies only for real runtime features. For a starter API,
include
specx, FastAPI,diwire,pydantic-settings, and Uvicorn. - Add dev dependencies for pytest, Ruff, mypy, HTTP testing, and ASGI lifespan testing when there is a FastAPI app.
- Keep mypy strict. Do not enable the DIWire mypy plugin for constructor-field
injection; it is only needed if an existing project intentionally uses
resolver_context.injectfunction wrappers. - Enable
select = ["ALL"]for Ruff in new projects. Ignore only formatter conflicts and deliberate file-category conventions, and put a concise comment describing what each ignored rule checks beside its code. - Generate
[tool.specx]withselect = ["ALL"]so every applicable built-in guardrail is explicit. Missing technology surfaces are skipped forALL; explicit technology selectors still warn when their surface is absent. - Add simple Makefile targets:
check,format,lint,test, anddevwhen there is a FastAPI delivery app.lintruns Ruff, mypy, anduv run --locked specx check; do not create separateguardrailsorlock-checktargets. - If SQLAlchemy adapters exist, add Alembic dependency/config and
migrate/makemigrationstargets with$specx-sqlalchemy-migrations. - When adding or changing Makefile targets, update root
AGENTS.mdCommands so coding agents run the right project commands. - Use locked execution for non-mutating validation commands.
- Run the smallest useful checks after changing tooling.
Guardrails
- Do not add heavyweight services such as Docker, Alembic, Redis, or PostgreSQL unless the repo has code that uses them.
- Once a SQLAlchemy adapter exists, Alembic is required. Do not use
metadata.create_allas a replacement for migrations. - Do not split linting rules across many files unless the project already does.
- Keep commands copyable and non-interactive.
- Keep
AGENTS.mdcommand guidance aligned with the actual Makefile. Do not list migration commands before SQLAlchemy/Alembic exists.
Code Style
Use blank lines as logical separators in all code. Keep related statements together, but separate independent setup, action, assertion, response, branch, and transformation groups so long blocks stay readable.
References
references/tooling.md- recommendedpyproject.toml, Makefile, and command patterns.
Signals
- GitHub stars
- 201
- Forks
- 35
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
specx-project-tooling- Source
- github.com/maksimzayats/specx