Workshop and scaffolding CLI for practical AI efficiency: learn core AI concepts, build your first agents, create useful CLIs, and adopt agent-first development patterns
Project description
culture-guide
Workshop and scaffolding CLI for practical AI efficiency: learn core AI concepts, build your first agents, create useful CLIs, and adopt agent-first development patterns
What you get
- An agent-first CLI cited from teken
(
afi-cli) — the runtime package has no third-party dependencies. - A mesh identity —
culture.yaml(suffix+backend) and the matching prompt file for that backend (this repo shipsbackend: colleague→AGENTS.colleague.md;claude→CLAUDE.md,acp→AGENTS.md,gemini→GEMINI.md). - The canonical guildmaster skill kit (11 skills) under
.claude/skills/, vendored cite-don't-import. Seedocs/skill-sources.md. - A build + deploy baseline — pytest, lint, the agent-first rubric gate, and PyPI Trusted Publishing wired into GitHub Actions.
- The named paradigm —
docs/culture.mdnames the culture every cloned agent inherits (agent-first CLI, cite-don't-import, learn→teach, the all-backends rule, converge-don't-vibe, …) and cites where each tenet is enforced. Addressable from the CLI:culture-guide explain culture.
Quickstart
uv sync
uv run pytest -n auto # run the test suite
uv run culture-guide whoami # identity from culture.yaml
uv run culture-guide learn # self-teaching prompt (add --json)
uv run teken cli doctor . --strict # the agent-first rubric gate CI runs
CLI
| Verb | What it does |
|---|---|
whoami |
Report this agent's nick, version, backend, and model from culture.yaml. |
learn |
Print a structured self-teaching prompt. |
explain <path> |
Markdown docs for any noun/verb path. |
overview |
Read-only descriptive snapshot of the agent. |
doctor |
Check the agent-identity invariants (prompt-file-present, backend-consistency). |
cli overview |
Describe the CLI surface itself. |
Every command supports --json. Results go to stdout, errors/diagnostics to
stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment
error, 3+ reserved.
Make it your own
- Rename the package
culture_guide/and theculture-guideCLI/dist name throughoutpyproject.toml, the package,tests/,sonar-project.properties, and thisREADME.md. The name is hard-coded in ~100 places, so list every occurrence first — see thegit grepdiscovery command inCLAUDE.md, the authoritative rename procedure. - Edit
culture.yamlwith yoursuffixandbackend. - Rewrite
CLAUDE.mdfor your agent and run/init. - Re-vendor only the skills you need from guildmaster (see
docs/skill-sources.md).
See CLAUDE.md for the full conventions (version-bump-every-PR,
the cicd PR lane, deploy setup).
Constant Colleague (Telegram responder)
A supervised, reset-surviving Telegram responder managed from the culture-guide CLI; it listens to a group and answers via an OpenAI/vLLM agent loop (strands-agents), colleague-swappable later.
Configure
Set these environment variables (via .env or your shell):
TELEGRAM_AGENT_BOT_TOKEN— your Telegram bot tokenCONSTANT_COLLEAGUE_CHAT_ID— the Telegram group/chat ID to listen onCOLLEAGUE_BASE_URL— OpenAI-compatible endpoint (defaulthttp://localhost:8001/v1)COLLEAGUE_MODEL— model name to useCONSTANT_COLLEAGUE_BOT_USERNAME— the bot's display usernameCONSTANT_COLLEAGUE_POLL_INTERVAL— seconds between getUpdates polls
Run
culture-guide listen start # install + enable systemd --user unit (survives reboot)
culture-guide listen status # is it live?
culture-guide listen stop
culture-guide listen restart
culture-guide listen logs # prints the journalctl --user command
How it works
Pipeline: telegram-agent (receive getUpdates + send) → relevance gate (tag-override bypass; else reranker B → chat A cascade on the lobes vLLM endpoint; A-only fallback) → strands-agents agent loop (the mind) → reply; per-chat memory via eidetic; supervised by a systemd --user unit with lingering so it resumes after a server reset.
This added two runtime deps (telegram-agent[telegram], strands-agents[openai]) — culture-guide is no longer zero-third-party-dep.
License
Apache 2.0 — see LICENSE.
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 agentculture_cli-0.8.0.tar.gz.
File metadata
- Download URL: agentculture_cli-0.8.0.tar.gz
- Upload date:
- Size: 252.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","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 |
630883faefc4c580c38923d7e2e486b21ed37243c8c405c2ff1d8d8aa0a39091
|
|
| MD5 |
b09fc90338bdbabb68ecc47ebaa99973
|
|
| BLAKE2b-256 |
4b9332c04ea99d120e2f3e726222c6e5f8c609de897ac5151ef6dac7359e8478
|
File details
Details for the file agentculture_cli-0.8.0-py3-none-any.whl.
File metadata
- Download URL: agentculture_cli-0.8.0-py3-none-any.whl
- Upload date:
- Size: 55.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","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 |
c9b623b9708fdfa51bf383f37c31a02b7dcd8b2747e6b2dba4ea6cccc19633bc
|
|
| MD5 |
5e093b5f9f78d293159e09ae8817b70c
|
|
| BLAKE2b-256 |
96e7fdf458f71443701caa52d0bb78395b0f17abe2aa1143eeb8fa6d077c67e8
|