Skip to content

Development standards ​

The project’s development standards (NDD): resolve, import, sync and amend them.

ndd_amendment_accept ​

effortless_ndd_amendment_accept — Stability: beta · project

Accepts an NDD amendment proposal: always writes the accepted content on the local side (.ai/ndd/<family>/<family>-ndd.v1.md), never into a .heritee.md file, since amending an inherited rule is a local override of the same id. Same id as the target: edits the section in place. Different id: adds a new section without touching the old one. Validates the resulting text before writing: an id collision refuses without writing anything. Also refuses an unknown or already decided proposal, or an unfindable target_id.

💬 You ask your agent

« Accept amendment proposal AMD-03. »

→ The agent callseffortless_ndd_amendment_accept
  • proposal_id = AMD-03
NameTypeRequiredDescription
proposal_idstringyesId of the amendment proposal to accept, as returned by effortless_ndd_amendment_propose. Required.

ndd_amendment_propose ​

effortless_ndd_amendment_propose — Stability: beta · project

Proposes an amendment to an NDD rule (editing an existing id, or a new rule if target_id is absent): assembles the candidate text and has it analyzed by the same code as ndd_resolve. Writes only the registry .effortless/ndd_amendments.json (status Proposed); no file under .ai/ndd/ is touched. Refuses, by name, an unknown family, an out-of-scale level or a missing Why.

💬 You ask your agent

« Propose an amendment to the rust standard on rule RUST-012, which keeps its identifier, at level INTERDIT, titled "No unwrap() outside tests". Why: a failing unwrap() makes the program panic. Body: use `unwrap()` only in tests. »

→ The agent callseffortless_ndd_amendment_propose
  • family = rust
  • target_id = RUST-012
  • proposed_id = RUST-012
  • level = INTERDIT
  • title = No unwrap() outside tests
  • why = A failing unwrap() makes the program panic.
  • body = Use `unwrap()` only in tests.
NameTypeRequiredDescription
familystringyesTarget NDD family; it must exist under .ai/ndd/. Required.
target_idstringnoId of the existing rule the amendment edits; absent for a new rule.
proposed_idstringyesId the rule will carry once accepted. Required.
levelstringyesLevel of the rule: OBLIGATOIRE, RECOMMANDÉ or INTERDIT; any other value is refused. Required.
titlestringyesTitle of the rule. Required.
whystringyesRationale of the rule (the Pourquoi section); a blank value is refused. Required.
bodystringyesBody text of the rule. Required.

ndd_amendment_reject ​

effortless_ndd_amendment_reject — Stability: beta · project

Rejects an NDD amendment proposal: sets the Rejected status, the reason (required, verbatim) and a timestamp in .effortless/ndd_amendments.json. No file under .ai/ndd/ is opened for writing. Refuses, by name, an empty or blank reason, and an unknown or already decided proposal.

💬 You ask your agent

« Reject amendment proposal AMD-03, reason: it contradicts the inherited standard's rule. »

→ The agent callseffortless_ndd_amendment_reject
  • proposal_id = AMD-03
  • reason = It contradicts the inherited standard's rule.
NameTypeRequiredDescription
proposal_idstringyesId of the amendment proposal to reject, as returned by effortless_ndd_amendment_propose. Required.
reasonstringyesReason for the rejection, recorded verbatim; a blank value is refused. Required.

ndd_import ​

effortless_ndd_import — Stability: beta · project

Imports a development standard hosted in a shared repository: read through git show <repo>/<ref>:<path> (declared in the stack's languages[].ndd.source), with no fetch or clone. Writes .ai/ndd/<family>/<family>-ndd.v1.heritee.md (raw content, unvalidated) and its provenance file {depot, reference, date}. A missing or invalid git reference degrades cleanly (available:false with a named reason, no file written). Refuses, by name, an unknown stack_id, a technology absent from the stack, or a source that is not git. The only write point for inherited standards by import; ndd_resolve stays read-only.

💬 You ask your agent

« Import the rust standard from the shared standards repo, for the app stack. »

→ The agent callseffortless_ndd_import
  • stack_id = app
  • techno = rust
NameTypeRequiredDescription
stack_idstringyesId of the stack whose languages[].ndd.source declaration is imported. Required.
technostringyesId of the declared language (languages[].id) whose git source is imported; it is also the name of the NDD family laid down. Required.

ndd_resolve ​

effortless_ndd_resolve — Stability: beta · project

Read-only. Resolves the applicable development standards (NDD): by declared families (stack), families derived from a path, or the whole known corpus if both are absent. Returns each qualified rule (id, level, title, why, family, origin, file, line), sorted by family then id; the body is served only if include_body is true. Refuses, by name, an unknown family, an out-of-scale level, a missing Why, a duplicate id, or a total absence of standards under .ai/ndd/.

💬 You ask your agent

« Which development standards apply to the file src/parser.rs? »

→ The agent callseffortless_ndd_resolve
  • path = src/parser.rs
NameTypeRequiredDescription
stackarray<string>noDeclared NDD families to resolve, named like the folders of .ai/ndd/; an unknown family is refused. With path also absent, the whole known corpus is resolved.
pathstringnoProject-relative path from which extra families are derived, in addition to stack.
include_bodybooleannoIf true, returns the body of each rule; default false (bodies are free prose and costly to transmit).

ndd_source ​

effortless_ndd_source — Stability: beta · no project · usable before any project

Reads or sets the global source of development standards (~/.effortless/ndd_source.json): a local folder or a git URL, followed by effortless_ndd_sync. Without source: reads. Empty source: removes. A project can override it with settings.ndd_source in effortless.json.

💬 You ask your agent

« Set my global standards source to the git repository https://github.com/ArboRithm/standards.git. »

→ The agent callseffortless_ndd_source
  • source = https://github.com/ArboRithm/standards.git
NameTypeRequiredDescription
sourcestringnoAddress of the norms repository: a local folder or a git URL. Absent: reads the current source; empty string: removes the source.
referencestringnoBranch or tag to follow for a git source (default: the default branch).

ndd_sync ​

effortless_ndd_sync — Stability: beta · project

Updates the project's inherited standards from its standards repository (project source, otherwise global): for each project language (declared stacks, present families, and agnostic), writes .ai/ndd/<family>/<family>-ndd.v1.heritee.md and its provenance. Never touches the local standard. Returns the families updated, unchanged, and those the repository does not carry. A git source is cloned then followed by fetch in ~/.effortless/ndd-cache/.

💬 You ask your agent

« Update the project's inherited standards from the standards repository. »

→ The agent callseffortless_ndd_sync

No parameters.

Effortless — ArboRithm