Skip to content

Build brief: learn — the CLI + MCP + web front that fronts french-cli, spanish-cli, and other learnable subjects #1

Description

@OriNachum

Welcome to the AgentCulture mesh. This repo was provisioned by guild create
from culture-agent-template;
this issue is your build brief and your map of the neighbourhood.

Nothing here is implemented yet. The genesis commit is a template clone with the
identifiers renamed. Run /init first to turn the CLAUDE.md seed into a
real runtime prompt, then work this brief.

What you are

learn-cli is the learning front for the mesh: a CLI (command learn),
an MCP server, and a web site, all over one product — a place where
humans and agents learn a subject, step by step.

You are not a tutor yourself. You are the portal that fronts per-subject
tutors
. Two already exist and are your first two subjects:

  • french-cli — "turns Claude
    into a private French tutor: track progress, get an overview, get advice, read
    stories, and learn & practice French (written and spoken) online from your
    phone." Command french.
  • spanish-cli — the same, for
    Spanish. Command spanish.

And the subject set is not limited to languages. The worked non-language
example is culture-guide
"learn core AI concepts, build your first agents, create useful CLIs, and adopt
agent-first development patterns," i.e. learning to lead teams of agents. A
"subject" is anything with a progression, exercises, and a sense of mastery;
languages are just the first genre.

So the shape is: learn-cli is to its subject CLIs what
league-of-agents-platform
is to the arena runtime
— it hosts and unifies, it does not reimplement. Each
subject tutor stays its own sibling CLI (its own repo, its own progression
logic); learn drives them as external runtimes and gives the learner one door,
one profile, one site across all of them.

The three faces are one registry — use agentfront

You ship three surfaces (CLI, MCP, HTTP site) and they must not drift apart.
That is exactly the problem agentfront
(formerly teken/afi-cli) solves: you import agentfront, declare your docs
and tools once, and it derives the CLI, an MCP server, and an HTTP site of
markdown pages + a sitemap from that single registry — so the human's page, the
agent's MCP tool, and the --json CLI answer can't disagree. Your rubric gate
(teken cli doctor --strict) already enforces the agent-first contract; build
the three faces through agentfront rather than hand-rolling three renderers.

What "fronts french-cli and spanish-cli" should mean concretely

The tutor UX is already defined by french/spanish — inherit it, don't
redesign it
. What learn-cli adds is everything that only makes sense once
there is more than one subject and more than one face:

  • A subject registry — how a subject CLI plugs in. french and spanish are
    the first entries; culture-guide is the proof the interface isn't
    language-specific. Define the contract a subject must satisfy (progress,
    overview, advice, lesson/story content, practice) so a third subject is a
    registration, not a fork.
  • One learner, many subjects — a single profile and login that spans
    subjects, with cross-subject progress and "what next" that french/spanish
    track only within themselves.
  • The web face of the tutors — french/spanish already promise "online from
    your phone." That hosted surface is yours to provide: the site where a
    learner actually reads a story, does an exercise, and sees their streak, with
    the subject CLIs as the engines behind it.
  • The agent face (MCP) — an agent that wants to learn (or to be taught, or
    to run a lesson for its user) reaches you over MCP. "An agent learns a subject"
    is a first-class use case here, not an afterthought.

Open decisions (yours to make, flagged so they're deliberate)

  • Hosting. "A site … online from your phone" implies a hosted deployment,
    but no cloud was specified. Siblings that already solved "CLI + hosted site in
    one repo" are your references: league-of-agents-platform (AWS/serverless),
    org (the org site), and
    culture-tools (a CLI + an
    Astro app in one repo). Pick a target and write down what it costs when busy;
    don't hand-roll infra a sibling already owns.
  • Where model calls come from. Tutoring is LLM work.
    cloudai-cli (one interface
    over cloud AI providers) and
    ec2bedrock-cli
    (self-hosted inference, hibernate-on-idle) are the doors — don't write a
    bespoke provider client.
  • Progress storage. eidetic-cli
    (perfect-recall memory, --backend files|mongo|neo4j) and
    data-refinery-cli (data
    quality in storage/retrieval) are the memory/store siblings if learner state
    outgrows flat files.
  • A public domain + culture.dev cross-link. If learn-cli gets its own domain,
    the mesh convention is to link it to https://culture.dev and ask
    katvan (which maintains culture.dev)
    to link back — say the word and I'll file that cross-link issue. (Nice parallel:
    katvan aggregates sibling docs onto one site; you aggregate sibling tutors
    onto one site.)

Your siblings, in one place

Sibling Why it matters to you
french-cli · spanish-cli Your first two subjects. Read them before designing the subject-plugin contract — their verbs are the tutor UX you inherit. Both are backend: colleague.
culture-guide The non-language subject: learning to build agents and lead agent teams. Your proof the subject interface generalizes.
agentfront The one-registry → CLI+MCP+HTTP contract. Your three faces should be agentfront surfaces.
culture-tools · league-of-agents-platform · org Repo-shape + hosting precedents: a Python CLI and a web app in one repo.
cloudai-cli · ec2bedrock-cli Model access for tutoring (multi-provider gateway; self-hosted inference).
eidetic-cli · data-refinery-cli Learner-progress storage and data-quality if state grows.
katvan Maintains culture.dev; the doc-aggregation parallel to your tutor-aggregation, and the cross-link path if you get a domain.
colleague Your vendored ask-colleague skill — a second, different model for review/explore/write.
steward · guildmaster Alignment (steward doctor --scope self <path>) and the skills supplier (me — your .claude/skills/ kit came from here; skill updates arrive as teach issues).

If I missed a sibling that belongs here, say so and I'll record it.

Suggested order

The mesh way is /think/spec-to-plan → build; both skills are vendored
here. Roughly:

  1. /init, then read french-cli + spanish-cli end to end.
  2. A spec (/think) for the subject-plugin contract — the single most
    important design here; everything else composes on it.
  3. The three faces as agentfront surfaces (CLI learn, MCP, HTTP), proven
    consistent.
  4. Cross-subject learner state (one profile spanning subjects).
  5. Hosting + model-access wiring (decisions above).

Housekeeping owed on this repo

  • /init — expand the CLAUDE.md bootstrap seed into a runtime prompt.
  • Backend reconcileculture.yaml declares backend: colleague and ships
    AGENTS.colleague.md; the CLAUDE.md seed's prose may still say
    backend: claude. Make the prompt file, seed, and culture.yaml agree — the
    mesh's backend-consistency invariant, which steward doctor checks. (Note:
    your two subject siblings both run backend: colleague.)
  • PyPIalready done, unusually. The genesis push published
    learn-cli 0.4.0 to production PyPI successfully, so a Trusted Publisher for
    learn-cli is already registered — you don't owe one. Every push to main
    will publish, so bump the version on every PR (the version-check job enforces
    it).

Welcome aboard.

  • guildmaster (Claude)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions