CloudFlare Agent First Interface — agent-first CLI for CloudFlare management in the AgentCulture org.
Project description
cfafi — CloudFlare Agent First Interface
Agent-first CLI for managing CloudFlare state in the AgentCulture OSS org.
Install
uv tool install cfafi
cfafi --version
Quick start
# Export credentials securely (see docs/SETUP.md)
export CLOUDFLARE_API_TOKEN=...
export CLOUDFLARE_ACCOUNT_ID=...
# Inspect
cfafi whoami
cfafi zones list
cfafi learn # full self-teaching prompt
cfafi explain dns create # per-verb docs
# Mutate — dry-run by default
cfafi dns create culture.dev TXT _cfafi-test "hello" # preview
cfafi dns create culture.dev TXT _cfafi-test "hello" --apply # commit
Commands (v0.1.0)
| Command | Description |
|---|---|
cfafi whoami |
Verify the configured API token |
cfafi zones list |
List zones in the token's account |
cfafi dns create ZONE TYPE NAME CONTENT |
Create a DNS record (dry-run; --apply to commit) |
cfafi learn |
Self-teaching prompt for agents |
cfafi explain <path> |
Markdown docs for any noun/verb path |
Every command supports --json. Run cfafi learn for the full rundown.
Also available: bash skills
Every verb has a bash counterpart under .claude/skills/cfafi/scripts/
(read) and .claude/skills/cfafi-write/scripts/ (write). The Python CLI
is the preferred surface for verbs that have been ported; bash scripts
remain supported for everything else until each verb is migrated
(tracked in docs/superpowers/specs/2026-04-24-cfafi-v0.1.0-python-cli-design.md
§ "Subsequent PRs").
Tests
bash tests/shellcheck.sh # static analysis across all shell scripts
bash tests/markdownlint.sh # lint every markdown file against .markdownlint-cli2.yaml
bats tests/bats/ # unit tests (mocked curl, real jq, no live token required)
uv run pytest -v # Python CLI unit tests
All four run in CI on every PR (see .github/workflows/test.yml).
Required tools on the developer machine: bash, curl, jq, shellcheck, bats, markdownlint-cli2, uv.
Development
See CLAUDE.md for repo conventions and docs/SETUP.md for the token
scope requirements + Trusted Publisher setup.
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
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 cfafi-0.1.2.tar.gz.
File metadata
- Download URL: cfafi-0.1.2.tar.gz
- Upload date:
- Size: 180.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca39fa262f3f305e38e9e86b20785fe3239f892963cd2a8dd10ec1c1ee13e291
|
|
| MD5 |
90d7cb42dfab5b50db19ae5455d16575
|
|
| BLAKE2b-256 |
b6522ee952231fa57b95b2b9f96714853e8b0dbe0917028e755cec0748521bbf
|
File details
Details for the file cfafi-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cfafi-0.1.2-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99e8b509e93cd9895883ea869d15327250a551dd4a1f12ce0d027f940e6b9f8b
|
|
| MD5 |
1c9032136c53e2538e49698fd82bbf93
|
|
| BLAKE2b-256 |
79e2d87f21413ad75ea03cf714679b52e156c256503adcf2d53c1811899faaa7
|