Test your package through the eyes of a newbie agent — a fresh AI agent reads only your docs/skills and tries to use your package.
Project description
newb
A fresh AI agent reads only your docs and tries to use your package. If it succeeds, your docs work.
How it works
┌──────────────────────┐ ┌──────────────────────────────┐ ┌──────────────────────┐
│ Your package │ │ sac (scitex-agent- │ │ Report │
│ │ │ container) │ │ │
│ ./docs/ or │ │ │ │ what_for │
│ ./_skills/<pkg>/ │ → │ spins up a fresh Claude │ → │ problems_solved │
│ tests_newb.yaml │ │ Code session (local / │ │ quick_start │
│ (optional) │ │ docker / apptainer) with │ │ when_not_to_use │
│ │ │ only your skills mounted │ │ tests[] (pass/fail)│
└──────────────────────┘ └──────────────────────────────┘ └──────────────────────┘
│ ▲
│ │ newb POSTs N prompts via A2A JSON-RPC
└────────── stages ──────────┘
(one container, N requests)
newb owns the test schema (4 canonical questions + tests_newb.yaml
- graders + report rendering). sac owns everything else: runtime selection, auth, isolation, Claude Code session lifecycle. newb only speaks A2A.
Install
pip install newb
scitex-agent-container is pulled in as a dependency.
Use
newb ./docs # any dir of .md files
newb ./src/mypkg/_skills/mypkg # standard SciTeX layout
newb https://github.com/user/repo.git # git URL — shallow-clones
newb ./docs --format markdown >> README.md
Asks a fresh Claude Code agent four canonical questions (what for /
problems solved / quick start / when not to use), plus any
author-defined tests in tests_newb.yaml. Output: JSON (for CI) or
markdown.
Author tests (tests_newb.yaml)
- name: redirects_parallel
prompt: How do I run things in parallel?
expect_contains: ["does not"]
judge: "Must redirect to an alternative tool, not hallucinate."
Each test combines optional substring grading and an optional LLM judge.
Auth, runtime, isolation
All handled by sac — see scitex-agent-container for credential setup, runtime backends (local / docker / apptainer / ssh-remote / slurm), and isolation primitives. newb's job ends at "POST the prompt, parse the response."
Library
import newb
report = newb("./docs")
print(newb.render_markdown(report))
Requirements
- Python 3.10+
scitex-agent-container(auto-installed) — see its README for one-time account/credential setup
License
AGPL-3.0-only.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file newb-0.7.0.tar.gz.
File metadata
- Download URL: newb-0.7.0.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa569a99cbf27c754f6e73dba807c835ab68a12321d0ad2346ef955f85b3ef56
|
|
| MD5 |
ac006fe1b0cd036a22e7dfc41831a0e8
|
|
| BLAKE2b-256 |
1d77b83b86598c54bd33fec4fe05dc316081e3e068121baab802cedb75426738
|
File details
Details for the file newb-0.7.0-py3-none-any.whl.
File metadata
- Download URL: newb-0.7.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
257bf2add045651526ef79ab651bd37ccf65a5499c8e459d2b26ca2fe9481511
|
|
| MD5 |
513aef2b7518ad75aa1d4777cae9d237
|
|
| BLAKE2b-256 |
7a0c65e52d7d933b75fd4a1a9c4ba0d350964c874de4a8fc9cc81393a1fb189e
|