Ref sp dev repo conventions
Skill swiftpostlabs/agentic-tools/.agents/skills/ref-sp-dev-repo-conventions
Repo-specific conventions for this Python project (agentic-tools): the feature-first src/agentic_tools layout, pyproject.toml configuration hub, Black + Pyright-strict + pytest tooling via Poe, typing rules, CLI and script placement, and translations. Use when: creating or moving features, tests, or CLI entrypoints; deciding which top-level or package folder a file belongs in; adjusting pyproject.toml, Poe tasks, or tool config; or explaining how this repo is wired.From its SKILL.md
npx -y skills add swiftpostlabs/agentic-tools --skill ref-sp-dev-repo-conventionsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Repo Conventions
Purpose
Help the agent work within this repository the way it is actually structured, configured, and validated, so the codebase stays clean and maintainable. This skill owns the repo-specific decisions; portable guidance lives in the skills listed under Scope boundaries.
Values
- Prefer simplicity over cleverness.
- Prefer maintainability over short-term convenience.
- Prefer explicit structure and predictable behavior over hidden magic.
When to use this skill
- Creating, moving, or reviewing code under
src/agentic_tools/(features, entrypoints, core plumbing). - Adding or updating tests, CLI entrypoints, or Poe tasks.
- Deciding which top-level folder (
src/,scripts/,.agents/,.github/) or package folder (main,features,core,shared,infrastructure) a file belongs in. - Adjusting
pyproject.toml, tool configuration (Pyright, Black, pytest, Hatch), or the Poe tasks. - Explaining how this repository is wired at the top level.
Scope boundaries
This skill is the repo-specific layer. Defer portable decisions:
.agents/skills/ref-sp-py-python/SKILL.md— portable Python structure, typing, and CLI patterns..agents/skills/ref-sp-dev-coding-patterns/SKILL.md— language-agnostic naming, control flow, comments, testing defaults..agents/skills/ref-sp-dev-projects-architecture/SKILL.md— portable feature-folder boundaries, shared-utility thresholds, product-vs-maintenance split.
Use this skill for the concrete package name, folder placement, pyproject.toml wiring, and validation commands in this repo.
Project context
- Language: Python (targets 3.14); legacy JS/JSDoc Node port remains under
src/agentic_tools_olduntil intentionally redesigned. - Distribution name
agentic-tools; importable packageagentic_toolsundersrc/agentic_tools/(the dash→underscore normalization is normal Python packaging). - Tooling: Hatch (packaging), uv (dependencies/runner), Black (formatting), Pyright strict (types), pytest (tests), poethepoet (
[tool.poe.tasks]).
Top-level repo layout
AGENTS.md # source-of-truth agent guidance (Copilot reads it natively)
.agents/skills/<skill>/SKILL.md # agent workflow skills (+ references/ assets/ evals/ scripts/)
.agents/config.json # policy + skills config
.agents/playground/ # local scratch space for temporary helper files (gitignored)
.agents/tasks/ # local task backlog and tracked task folders (gitignored)
src/agentic_tools/ # shipped Python package (feature-first, see below)
src/agentic_tools_old/ # legacy Node port (boundary; do not extend unless asked)
scripts/ # repo maintenance/automation, not shipped product
pyproject.toml # single configuration hub for all tools
GEMINI.md, .claude/CLAUDE.md # thin provider routing stubs -> AGENTS.md
Package layout (feature-first)
src/agentic_tools/
main/ # app-level CLI composition and the installed entrypoint (cli.py)
cli.py cli_test.py translations/en.json
features/<feature>/ # user-facing capabilities and command groups, tests collocated
main.py main_test.py translations/en.json
core/<concern>/ # foundational plumbing: config, i18n wiring, logging, focused 3rd-party wrappers
main.py main_test.py
main: app-level command composition; keepsrc/agentic_tools/main/cli.pyas the unique installed entrypoint.features: product behavior and user-facing command groups; keep code and tests together.core: foundational plumbing and third-party integration features depend on — not domain behavior.shared: add only when a real domain-agnostic contract must be shared by multiple features.infrastructure/infra: only for strict external adapters too large/specific forcore; not the default here.- Do not create generic
utils/helpersfolders — choose a namedcore/<concern>orfeatures/<feature>. - Do not add
__init__.pyjust to mark packages; this repo uses implicit namespace packages unless package-level code is genuinely needed. - Do not create a top-level
tests/folder; tests are collocated (feature.py→feature_test.py).
Typing rules (Pyright strict)
- Type everything explicitly; avoid bare
dict/list/tuple/set— preferdict[str, str],list[int], etc. - Annotate parameters always; prefer inferred return types when sound, but add explicit returns for public/shared API contracts, protocols/callbacks, recursive/overloaded functions, or when inference would yield
Any/object/a misleading union. - Fix strict-mode issues by improving annotations, adding type guards (
isinstance), or restructuring. Treat# type: ignoreas a last resort with a short justifying comment. - For untyped third-party libs: install
types-...stubs first, else add minimal local stubs undersrc/typings(PyrightstubPath), before considering# type: ignore.
CLI and scripts
- Installed commands belong in
[project.scripts], routed through the groupedagentic-toolsentrypoint (src/agentic_tools/main/cli.py), mounting feature groups fromsrc/agentic_tools/features/<feature>/main.py. - Repo maintenance scripts stay in
scripts/(if __name__ == "__main__":is fine there). A user-facing feature belongs underfeatures/<feature>/, not hidden inscripts/. - Use
[tool.poe.tasks]for dev workflows and shell-like orchestration that do not fit[project.scripts]. - Ask before moving an existing script into the package or changing how the user runs it.
Scratch and task workspaces
- Temporary helper files go under
.agents/playground/, created with the edit tools — not generated through terminal heredocs or shell redirection. - Local task notes and tracked task folders go under
.agents/tasks/(seeref-sp-agents-local-tasks). - Both are local workspaces: never ship product code from them.
Testing conventions
- Collocate a
*_test.pynext to non-trivial code; name teststest_my_feature()formy_feature(). - pytest collects from
src/scripts, matching*_test.py. Add at least one focused test for new non-trivial logic.
Translation placement
- Root CLI strings:
src/agentic_tools/main/translations/en.json; feature strings:src/agentic_tools/features/<feature>/translations/en.json. - Reusable i18n library code lives at
src/i18n/main.py(behaves like an external package); repo-specific i18n configuration atsrc/agentic_tools/core/i18n/main.py. Features import the configured helper fromcore/i18n, not the raw library.
Tools and commands
Prefer the Poe tasks as the standard entrypoints; reach for the raw tool only for focused flags or debugging.
uv run poe test— pytestuv run poe lint/uv run poe lint-fix— Black check / formatuv run poe typecheck— Pyright strict on./srcuv run agentic-tools policy sync/... policy import-vscode— regenerate agent policy config- Before committing:
uv run poe lint-fix→uv run poe typecheck→uv run poe test, then commit only if all pass.
For the full pyproject.toml section-by-section breakdown, the tool command reference, and common config tasks, read ./references/pyproject-and-tooling.md.
Validation
For a narrow scaffold or folder-layout change:
uv run python -m pytest src/agentic_tools/main/cli_test.py -q
uv run python -m black --check src/agentic_tools
uv run python -m pyright src/agentic_tools src/typings
For broader changes touching shared config or the legacy boundary, run the full Poe tasks above. Read ./references/checklist.md before finalizing a placement or pyproject.toml change.
References
./references/pyproject-and-tooling.md—pyproject.tomlconfiguration hub, tool command reference, and common config tasks../references/checklist.md— quick review pass on placement andpyproject.tomlconsistency../assets/trigger-eval-queries.example.json— starter trigger-eval queries for this skill.
What ships with it: 3 files
6.6 KB alongside SKILL.md
assets/
references/
- checklist.md1.9 KB
- pyproject-and-tooling.md4.0 KB