Skills Reference#
create-python-project#
Scaffolds a new Python project from the ByteCode Solutions blueprint template.
Invocation
/create-python-project [project-name]
The project-name argument is optional. If omitted, the skill will prompt
for a name before proceeding.
Behavior
Resolves the project name from the argument or by prompting the user.
Asks for the target parent directory (defaults to the current working directory).
Clones the blueprint template:
git clone https://gitlab.com/bytecode-solutions/templates/blueprint-python.git <project-name>
Confirms success and shows the resulting directory structure.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
|
|
run-linters#
Runs all linters and type checkers on a Python package sequentially.
Invocation
/run-linters <package>
The package argument is required and must be the name of the Python package
or directory to analyse.
Pre-execution check
Before running any linter the skill checks that all five tools are installed:
pip freeze | grep -E "^(ty|ruff|mypy|pyright|pylint)=="
If any tool is missing the skill stops and advises the user to either install
the missing tools individually (e.g. pip install ruff mypy) or install
core-dev-tools, which bundles all of them and is the default in the
ByteCode Solutions ecosystem.
Behavior
Runs each tool one at a time in this order:
ty check <package>ruff check <package>mypy --explicit-package-bases <package>pyright <package>pylint <package>
If a tool exits with errors the skill stops immediately and asks the user whether they want to fix the issues before continuing.
The tests/ package is excluded, test code is not required to comply with
linters and type checkers.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
|
|
run-tests#
Runs the project test suite, stops on failure, and iterates through fixes one by one.
Invocation
/run-tests
No arguments, the skill detects the available runner automatically.
Behavior
Checks whether
core-testsis installed andmanager.pyexists. If both are present, runspython manager.py run-tests.Otherwise falls back to
pytest:Inspects
tests/to detect the file naming convention (test_*.py,tests_*.py,*_test.py, etc.).Builds
--override-ini="python_files=<patterns>"from the detected patterns and runspytest tests/unit tests/integration.After the first successful run, persists the discovered pattern to the project’s
CLAUDE.mdso future invocations skip the inspection step.
If neither runner is available, stops and advises the user to install
core-tests(the default in the ByteCode Solutions ecosystem) orpytest.
Rules
Functional tests are never executed.
Runs directly in the conversation, no agents or subagents.
On failure
If any tests fail the skill:
Parses the output to identify every failing test.
Reports the full list to the user.
Asks whether the user wants to fix the failures.
If yes, creates one task per failing test (
TaskCreate), then works through them one by one: fix → re-run that test in isolation viapytest <test_id>→ mark the task complete → move to the next. Pytest is always used for isolated re-runs becausemanager.py run-testsdoes not support targeting a single test.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
run-coverage#
Runs test coverage, stops on failure, and iterates through fixes one by one.
Invocation
/run-coverage
No arguments, the skill detects the available runner automatically.
Behavior
Checks whether
core-testsis installed andmanager.pyexists. If both are present, runspython manager.py run-coverage.Otherwise falls back to
pytestwithpytest-cov:Inspects
tests/to detect the file naming convention (test_*.py,tests_*.py,*_test.py, etc.).Builds
--override-ini="python_files=<patterns>"from the detected patterns and runs:pytest tests/unit tests/integration --cov --cov-report=term-missing \ --override-ini="python_files=<patterns>"
After the first successful run, persists the discovered pattern to the project’s
CLAUDE.mdso future invocations skip the inspection step.
If neither runner is available, stops and advises the user to install
core-tests(the default in the ByteCode Solutions ecosystem) orpytestwithpytest-cov.
Rules
Functional tests are never executed.
Runs directly in the conversation, no agents or subagents.
Reporting
After a successful run the skill reports:
The total coverage % of the project.
Every module below 100 %, listed with its individual percentage.
If coverage is not 100 %, the skill asks the user whether they want to reach
100 %. If yes, it creates one task per under-covered file (TaskCreate) and
works through them one by one: write or fix tests → re-run coverage for that
module to verify → mark the task complete → move to the next.
On failure
If any tests fail during the coverage run, the /run-tests skill is invoked
immediately, it owns failure identification, user confirmation, per-test task
creation, and iterative fixing.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
run-security#
Runs security vulnerability checks on a Python package using bandit
(static code analysis) and pip-audit (dependency CVE scanning).
Invocation
/run-security <package>
The package argument is required and must be the name of the Python package
or directory to analyse.
Pre-execution check
Before running any tool the skill checks that both are installed:
pip freeze | grep -E "^(bandit|pip-audit)=="
If either tool is missing the skill stops and advises the user to either install
the missing tools individually (e.g. pip install bandit pip-audit) or
install core-dev-tools, which bundles all of them and is the default in the
ecosystem.
Behavior
Runs each tool one at a time in this order:
bandit -r <package>: scans<package>for insecure code patterns (hardcoded secrets, unsafe calls, known dangerous APIs, etc.).pip-audit: scans all installed dependencies against known CVEs. No package argument is needed; it covers the entire environment.
If a tool exits with findings the skill stops immediately and asks the user whether they want to address the issues before continuing.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
|
|
develop#
Orchestrates a complete development task end-to-end: structured planning, multi-agent TDD implementation, and a final analysis pass.
Invocation
/develop [task description]
The task description argument is optional. If omitted, the skill uses
the task already described in the conversation.
Principles
The following principles are applied throughout every phase:
Principle |
Rule |
|---|---|
TDD |
Write tests before implementation. No production code without a failing test first.
Prefer |
SOLID |
Single responsibility per class; depend on abstractions, not concretions; open for extension, closed for modification. |
DRY |
Every piece of knowledge has a single authoritative location. No duplicated logic. |
KISS |
Prefer the simplest solution that satisfies the requirement. Complexity must be justified. |
YAGNI |
Do not build what is not needed now. No speculative abstractions or future-proofing hooks. |
LoD |
A component only calls methods on its immediate dependencies, never reaches through them to a third object. |
Imports |
All |
Environment setup
Before any planning or implementation, the skill checks whether a .venv directory
exists:
If present: all subsequent
python,pip, andpytestcalls use the venv (via. .venv/bin/activate &&prefix or direct.venv/bin/*paths).If absent: asks the user which Python version to use, then creates and activates the virtual environment:
<python-version> -m venv .venv . .venv/bin/activate && pip install --upgrade pip
Then asks whether to install project dependencies (e.g.
pip install -e .[dev]) and runs the install if confirmed.
All commands across every phase run inside the virtual environment.
Phase 1: Planning
Before proposing anything, the skill reads the existing codebase (CLAUDE.md,
directory structure, relevant source files) to avoid designing in a vacuum.
It then enters plan mode and:
Breaks the task into sub-problems.
For each sub-problem, identifies components, classes, interfaces, and dependencies; applies design patterns and documents the rationale.
When multiple valid design approaches exist, stops and asks the user, never picks autonomously. Follows this decision rule for composition vs. inheritance:
is-a relationship → inheritance (Liskov Substitution Principle holds).
has-a relationship → composition (delegation, no substitutability needed).
Runtime behavior injection → composition via Strategy, Decorator, or dependency injection.
“Prefer composition over inheritance” is a guard against misuse, not a universal default. When the relationship is ambiguous, both options are presented and the user decides.
Uses
WebSearch/WebFetchfor any required technical clarification.Creates
PLAN.mdat the project root with: problem statement, sub-problems, per-component interface (as Python abstract class orProtocol), dependency graph, test strategy, and design notes.Writes Python interface stubs (ABCs or
typing.Protocol) with full type annotations and one-line per-method docstrings, no implementation bodies. These are the contracts agents must implement exactly.
The skill exits plan mode and waits for the user to review and approve ``PLAN.md`` before proceeding to implementation.
Phase 2: Implementation
Creates a feature branch:
git checkout -b feature/<task-slug>.Reads
PLAN.mdto determine component dependency order:Independent components: agents are spawned in parallel.
Dependent components: agents are spawned sequentially, after their dependencies are confirmed complete.
Each agent receives its stub file, its
PLAN.mdsection, and the project context. Every agent must:Write unit tests first (TDD: tests before implementation).
Implement the component until all tests pass.
Achieve 100 % unit test coverage for its component.
Run
/run-linters <package>and fix all issues before reporting back.Match the stub interface exactly (flag any deviation for approval).
If an agent cannot reach 100 % coverage or a linter-clean state, main Claude takes over and resolves the remaining issues inline.
After all agents complete, main Claude writes integration tests covering cross-component interactions and end-to-end flows, then runs the full suite.
Phase 3: Analysis
Runs sequentially in the main conversation (no agents):
/run-linters <package>: linters and type checkers across the full package./run-security <package>: bandit static analysis + pip-audit CVE scan./security-review: built-in Claude Code security review of pending changes./review: built-in Claude Code code review.
After findings are addressed:
Creates a single git commit using Conventional Commits format (
feat,fix,refactor,test,docs,chore).Creates
DIAGRAM.md(Mermaid graph) if the task involved two or more components with notable relationships.Reports to the user: per-component summary, total coverage, issues resolved, branch name and commit SHA.
Asks whether to open a pull request.
Rules
Functional tests are never executed.
Each phase runs directly in the main conversation; agents are used only for per-component implementation in Phase 2.
Frontmatter
Field |
Value |
|---|---|
|
|
|
|
|
|