Skip to main content

These are tools that I use in my development workflow.

Project description

frob

Developer workflow CLI tools. Designed for agentic and human use.

Install: pip install frob or uvx frob. For editable dev install: pip install -e .


Commands

frob init -- project scaffolding

frob init list                              # list registered project types
frob init new <type> <name> --output DIR   # scaffold a new project

Project types:

  • python-library -- installable Python package with logging, tests, CI
  • python-tool -- Python CLI tool with argparse, app/, config, CI
  • cpp-library -- FetchContent-compatible C++ library with CMake, GTest/Catch2, CI
  • cpp-tool -- C++ executable with CMake, cross-platform CI, release workflow
  • pybind11-library -- hybrid Python/C++ library using pybind11 + scikit-build-core
  • pyo3-library -- hybrid Python/Rust library using PyO3 + maturin

All templates include: Makefile, .gitignore, docs/, GitHub Actions CI, branch-protection workflow.


frob map -- project structure

frob map src/           # directory tree with token counts per file
frob map src/ --json    # JSON with path, lines, tokens, symbols per file
frob map src/ --depth 2 # limit recursion depth

frob outline -- file signatures

frob outline src/file.py           # functions and classes with line numbers
frob outline src/file.py --json    # structured JSON output

Shows signatures only -- no bodies. Fast way to see what is in a file before reading it.


frob stub -- single-function context

frob stub src/file.py target_fn              # keep target intact, stub everything else
frob stub src/file.py MyClass.method         # class method variant
frob stub src/file.py target_fn --output FILE

Useful for giving an LLM minimal context for one function.


frob bundle -- function + its dependencies

frob bundle src/file.py fn_name         # function + all functions it calls
frob bundle src/file.py fn_name --depth 2
frob bundle src/file.py fn_name --format json

frob tokens -- token count

frob tokens src/file.py            # total tokens
frob tokens src/file.py --detail   # per-symbol breakdown
frob tokens src/ --json            # JSON with total_tokens and per-file list

frob xref -- cross-references

frob xref symbol src/       # find definition + all callers of a symbol
frob xref symbol src/ --json

frob cycle -- import cycle detection

frob cycle src/             # detect import cycles
frob cycle src/ --suggest   # with refactoring suggestions

frob dup -- duplicate code detection

frob dup src/                       # find structurally identical code blocks
frob dup src/ --min-lines 10        # minimum block size
frob dup src/ --json                # JSON with groups, clone_type, fragments

Detects exact clones and renamed-variable clones.


frob arch -- architectural lint

frob arch src/                              # god-class, long-function, deep-nesting
frob arch src/ --json                       # JSON with suggestions list
frob arch src/ --max-function-lines 50
frob arch src/ --max-class-methods 20

frob docs -- docstrings and docs/ search

frob docs src/file.py                       # extract all docstrings
frob docs src/file.py MyClass               # docstrings for a specific symbol
frob docs src/file.py --overview            # relevant headings from docs/ folder
frob docs src/ --search "authentication"    # full-text search through docs/ .md files
frob docs src/file.py --json

frob bind -- binding consistency check

frob bind .                    # verify // BIND: comments match source declarations
frob bind . --json             # JSON with ok, mismatches list
frob bind . --list-bindings    # show all BIND declarations found
frob bind . --list-sources     # show all detected source signatures

Checks pybind11 (bindings.cpp) and PyO3 (lib.rs) // BIND: signature comments against actual C++ header declarations and Rust #[pyfunction] signatures.


frob parse -- parse tool output

<tool> | frob parse <tool>          # parse and summarize
<tool> | frob parse <tool> --json   # structured JSON
<tool> | frob parse <tool> --passthrough   # propagate exit code

Supported tools: pytest, ruff, ty, clang, junit, pycharm


frob inspect -- PyCharm headless inspection

frob inspect <project_dir>
frob inspect <project_dir> --json

Development

make install      # uv sync --all-extras
make format       # black + ruff format
make lint         # ruff + ty check
make test         # pytest tests/
make test-fast    # pytest --testmon (incremental)
make upload       # bump version if needed, build wheel, publish to PyPI
make clean

The .frob-foundation.md convention: when smart-start generates infrastructure code, it writes a registry of abstractions to .frob-foundation.md at the project root. The implementer agent reads this file automatically so it knows which base classes, protocols, and helpers already exist and should be used.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frob-0.0.2.tar.gz (58.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frob-0.0.2-py3-none-any.whl (87.8 kB view details)

Uploaded Python 3

File details

Details for the file frob-0.0.2.tar.gz.

File metadata

  • Download URL: frob-0.0.2.tar.gz
  • Upload date:
  • Size: 58.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for frob-0.0.2.tar.gz
Algorithm Hash digest
SHA256 babc29b0e7194d44ac9ac518f2f07164c315b58fe3eaffb3fe036a848c9fdec1
MD5 6e5dc9b8484df7c60399e06a1aca79b3
BLAKE2b-256 65598be445e2c20192010a01b61ebcb6b0aaf4d3eee0e85e218f4a293bee4fc2

See more details on using hashes here.

File details

Details for the file frob-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: frob-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 87.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for frob-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 acaa355668d2d2167599b98c811dcaf3723821cbd41e941b3c55bc59e214f0f8
MD5 52ba1a3fafab967482e6df068e28d8f4
BLAKE2b-256 671926cab490cf9155db8f27f9b1d1278a6228926a98a54a2ec7c9c740b1c0cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page