Specly Python CLI (Local Preview)
Standalone Python distribution for Specly — Spec-Driven Development scaffolding without requiring Node.js.
Status: Local development and testing only. This package is not published to PyPI or any public registry. The package name and public command identities remain provisional.
Supported Commands
specly init [options]: Generate SDD files conforming to canonical artifact contract v1.specly doctor: Read-only readiness check for Python runtime (>=3.10), agent markers, and packaged template fingerprints.specly plan <feature>: Read-only preview of proposed local file writes and effects.specly verify <feature>: Read-only verification of local specification files and checklist progress.
Note: specly run and specly recover are not supported in the Python CLI and remain available via the Node CLI.
Interruption & Overwrite Safety
- Running
initon existing files checks their SHA-256 against canonical templates. - Files matching canonical template bytes are reported as already complete and skipped.
- Modified or partial files trigger a warning requiring review; they are never overwritten without explicit
--force.
Optional Strands Task Execution Adapter
The optional module specly_cli.optional.strands_adapter provides a strictly bounded task-execution boundary using the Strands Agents SDK:
- Disabled by default: Default commands (
init,doctor,plan,verify) never import Strands or inspect ambient credentials. - Explicit authorization: Execution requires an
ExecutionRequestbound to an affirmativeapproval_digest, explicit provider configuration, and task ID. - Strict safety boundary:
- Allowed tools are restricted to structured, data-only local operations (
write-file). Shell, subprocess, VCS, PR, and network tools are prohibited. - Writable roots are confined to the project root; directory traversal, symlink escapes, and reserved paths (
.git,.specly) fail closed. - Resource limits (
budget_calls,timeout_seconds) halt execution with alimitedstatus and claim no success.
- Allowed tools are restricted to structured, data-only local operations (
- Evidence distinction: An
ExecutionRecorddocuments tool outcomes and status, but never marks tasks checked or implies requirements acceptance. Local unit tests run against local mock fixtures and contact no external providers. - Installation: Optional extra:
pip install "specly[strands]".
Optional Google AX Cluster Adapter
The optional module specly_cli.optional.ax_adapter provides read-only prerequisite diagnostics and effect previews for Google AX / Agent Substrate:
- Disabled by default: Default commands never import AX or inspect
KUBECONFIG/ ambient cluster credentials. - Offline diagnostics: Local inspection checks required binaries (
kubectl,ko,go) without probing remote clusters or networks. - Immutable effect preview: Previews bind context, namespace, operation, resource targets, and proposed effects to an immutable SHA-256 approval digest.
- Distinct mutation approval: Submitting a cluster operation requires affirmative approval matching the preview digest and explicit destination authorization (destination, operation, credential/session). Changing targets or effects invalidates approval and fails closed.
- Evidence status: Labeled
unverified(Google AX prerelease). No live cluster was contacted during local tests. - Installation: Optional extra:
pip install "specly[ax]".
Development & Testing
# Verify asset synchronization against canonical repository sources
python3 python/scripts/sync_assets.py --check
# Run test suite
PYTHONPATH=python/src python3 -m unittest discover -s python/tests
# Build isolated wheel
uv build --wheel --no-sources
Metadata
Release files for specly 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| specly-0.1.0.tar.gz | 25.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| specly-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.6 kB
Release files / specly-0.1.0.tar.gz
| Download URL | specly-0.1.0.tar.gz |
|---|---|
| Size | 25.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
635a5a33a2d92e7b414c371a3aaf722ff4ff76bbfcb814a5c6b863fb478fb0a5
|
|
BLAKE2b-256 checksum How to use checksums |
d274ced1982f885f78b28e16060178644f3cb7e54b6a75d9f3017b8053b0f71e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Zorin OS","version":"18","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / specly-0.1.0-py3-none-any.whl
| Download URL | specly-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c501b5d365f1fcaa14f070ac291be772cd1cc1286e293dbbd16231810b33d70a
|
|
BLAKE2b-256 checksum How to use checksums |
a1dea5add59fa864103419b0a787b620d21cbde20cd8d0195e06145a65105e94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Zorin OS","version":"18","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for specly 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.