Documentation
This path covers three things: reading your project's framing documentation, maintaining its user documentation (the one your users read), and translating the interface and the tool descriptions. You come to it to find a document, check that the documentation keeps up with the product, or add a language.
What you ask the agent
« Which framing documents does this project have? »
effortless_docs_list« Search the documentation for everything about delivery. »
« Read me the document blueprints/012-Epic-Export/cadrage.md in full. »
« Does our user documentation cover everything? Are there outdated pages? »
effortless_user_doc_coverage« Check the user documentation inventory. »
effortless_user_doc_inventory« The documentation build is done in dist/docs: write its manifest. »
« Install the new offline copy of the documentation: the candidate is in dist/docs, the staging copy in dist/staging, the current copy in app/docs. »
effortless_user_doc_syncsource_dir=dist/docsstaging_dir=dist/stagingcurrent_dir=app/docs
« Which interface keys are not yet translated into Spanish? Translate them. »
« Show me the English catalog of the tool descriptions. »
What the agent does
Read and search the framing documentation
effortless_project_docs_listlists the project's framing documents: the files at the root ofblueprints/whose header carriestype: cadrage-projet.effortless_docs_listlists all the Markdown documents ofblueprints/, subfolders included, with their title.effortless_docs_searchwithquerysearches these documents, ignoring case and accents. Results are ranked by number of occurrences, each with an excerpt.effortless_doc_readwithrel_path(relative to the project root) reads a document. It refuses any path outsideblueprints/.
These four verbs only read.
Maintain the user documentation
The user documentation is declared in a userdoc.json file at the root of a stack. All four verbs take stack_id; without it, the agent targets the only stack that declares user documentation.
effortless_user_doc_inventoryreads and validates the declared inventory, and resolves each source once.effortless_user_doc_coveragemakes the diagnosis: gaps (a source nobody documents), outdated pages (the source has moved since generation), orphan pages (the source is gone).regimeisobservation(default: findings are returned without blocking) orpublication(findings block).effortless_user_doc_manifestwithoutput_dir(relative to the stack, no default) closes a build already produced: it queries the version pair through the declared command and writes the manifest last. If it cannot produce it, it removes the whole output.effortless_user_doc_syncwithsource_dir,staging_dirandcurrent_dirinstalls an offline copy: the candidate is written to staging, its manifest is read back, and the format version is requested from the shell. A copy of a different format is refused and the copy in place is kept.
Translate the interface and the tool descriptions
Two surfaces can be translated: front (the interface) and mcp (the tool descriptions). French is the source; it is never written.
effortless_i18n_statuswithsurfaceandlangreturns the delta: the missing keys (with their French text) and the machine-translated keys no human has reviewed.- The agent translates this delta itself, then calls
effortless_i18n_applywithentries(flat keys to text). The translations go to~/.effortless/locales/<surface>/<lang>.jsonand are marked "machine". Withreviewed: true, they are marked as reviewed by a human, and are no longer overwritten by a machine translation. effortless_i18n_exportreturns the full catalog (shipped plus your additions) for a surface and a language, for inspection or backup.
What you get
- Documents found and read without you opening the
blueprints/folder. They can also be read in the Knowledge screen (framing lenses and search field). - A coverage diagnosis with an exit code: conforming, gap, outdated, orphan, or one of the refusals (invalid inventory, measurement impossible, page altered).
- A build manifest and an installed offline copy, when you ask for them.
- Translation files in your home folder, without touching the shipped code.
When the agent is refused
| Situation | What the refusal says | What to do |
|---|---|---|
Path outside blueprints/, absolute or going up | "Chemin hors périmètre." | Give a relative path under blueprints/, as returned by effortless_docs_list. |
| No stack declares user documentation | userDoc:usage ("aucune stack ne porte de userdoc.json") | Declare a stack's user documentation. |
| Several stacks declare it | userDoc:usage (the stacks are named) | Pass stack_id. |
Unknown stack_id | userDoc:usage | List the stacks with effortless_stack_list (see Code and stacks). |
| Invalid inventory (code 5) | userDoc:inventoryInvalid | Fix the inventory; effortless_user_doc_coverage names what is missing. |
| Measurement impossible (code 6) | userDoc:unmeasurable | A declared command failed: read it in the message and fix it. |
| Page altered (code 7) | userDoc:pageAltered | Regenerate the derived page rather than editing it by hand. |
Blocking coverage under the publication regime | userDoc:coverageBlocking | Fill the coverage described in the report, or go back to observation. |
| Copy to install has a different format from the shell's | a userDoc:* refusal; the copy in place is kept | Rebuild the documentation with the right format version. |
| Invalid translation surface | "surface invalide … (attendu : front, mcp)" | Pass front or mcp. |
| Writing in French | "Le français est la source : écriture interdite." | Translate into another language (en, es, ru…). |