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.0.tar.gz (58.5 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.0-py3-none-any.whl (87.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: frob-0.0.0.tar.gz
  • Upload date:
  • Size: 58.5 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.0.tar.gz
Algorithm Hash digest
SHA256 f1889cdd01c2dc5ab9cb65ed46eb81b115b9b6c0b8a7b69e5155ed80959ad94a
MD5 f5f86eff65c24a3325fdafcafcbfe857
BLAKE2b-256 d470447bc554f9580107f6385a2989a72991540f513ba189f57a888b7e6708af

See more details on using hashes here.

File details

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

File metadata

  • Download URL: frob-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 87.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f4fb8000f34758cf6c73306d045ef900162186123cda8385bee00ebc8f3dba0
MD5 5418ecdfeb398264dc93f2780301ac8b
BLAKE2b-256 a687a6fb400dcdd3b3b15f2b829211b61002f6c6e0de24ba27500203bab2bedb

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