Team loop and routing
The analyst / developer / QA loop, routing tasks to models, provider profiles.
crew_init
effortless_crew_init — Stability: beta · project
Starts the CREW loop: three agent roles (analyst, senior developer, QA engineer) take turns on the OPALE pipe, while the calling agent orchestrates. Use when the user asks to "start the crew loop", "run the team on the current epic" or "open an evolutions workshop". In all scope, the cascade enters the workshop as soon as no epic is left to deliver and graduates one axis into the next epic, up to the max_epics cap. Gated (semi-auto).
« Start the team loop on the current epic with the goal "Ship the CSV export", with a maximum of 6 rounds. »
| Name | Type | Required | Description |
|---|---|---|---|
goal | string | yes | Readable goal of the loop, repeated in every role prompt. Required. |
scope | string | no | Scope of the cascade: story, epic, all or workshop (default epic). |
max_rounds | integer | no | Maximum number of acts; 0 means unlimited (default 100). |
max_epics | integer | no | Maximum number of epics processed; 0 means unlimited (default 3). |
bar | object | no | Mechanical bar: object mapping a name (test, lint, typecheck, build) to a shell command, or to an object with command and optionally cwd or stack; at least one command is needed, otherwise the initialization is refused. |
force | boolean | no | If true, overwrites an already initialized loop (default false). |
crew_report
effortless_crew_report — Stability: beta · project
Reports the outcome of the act performed by a role, advances the crew loop and directly returns the next act. The reported role must be the one the stage expects, otherwise the report is refused without recording anything. payload_path is an escape hatch for a payload too large for payload — never the default route, and mutually exclusive with payload (both together are refused). ⚠️ This call can be long: the engine measures the mechanical bar itself (up to 4 commands, 600 s each) before handing back control — allow a generous call timeout on the client side. Gated (semi-auto).
« Here is the developer's report: verdict "done", the parser tests pass. Report it to the team loop. »
effortless_crew_reportrole=developerverdict=donesummary=The parser tests pass.
| Name | Type | Required | Description |
|---|---|---|---|
role | string | yes | Role reporting: analyst, developer or qa; it must be the role the loop expects. Required. |
verdict | string | yes | Verdict: go or no-go for qa, done for analyst and developer. Required. |
summary | string | yes | Compact summary of the act, appended to the ledger. Required. |
payload | object | no | Structured output of the role as a JSON object (free form, specific to each role); mutually exclusive with payload_path. |
payload_path | string | no | Path to a JSON file loaded as payload, for a payload too large to pass inline (4 MiB maximum); relative to the project, or absolute under it; mutually exclusive with payload. |
crew_status
effortless_crew_status — Stability: beta · project
Crew loop state, read-only: current stage, expected role, epic/story/task pointer, counters, caps, stop reason (finished_reason: scope_covered, epics_exhausted, rounds_exhausted — null while the loop is still running) and timestamped ledger of acts. ⚠️ By default the ledger only returns the latest acts (older ones are announced in ledger_omitted): pass full=true for the complete trace. Advances nothing, writes nothing.
« Where is the team loop at? Which step and which role is it waiting for? »
effortless_crew_status| Name | Type | Required | Description |
|---|---|---|---|
full | boolean | no | If true, returns the complete ledger instead of the latest acts only (default false; omitted acts are announced in ledger_omitted). |
crew_step
effortless_crew_step — Stability: beta · project
Returns the contract of the crew loop's next act: which role must act, on which model and effort level, and which expected output. The contract text does NOT travel in the response: prompt_path gives its reference, a project-relative path to a JSON object with a single prompt key, to be read from disk before launching the sub-agent. document (optional) targets one specific framing document. Does NOT advance the state — called twice, it returns the same thing twice. ⚠️ This call is usually instant, but it can be slow at the qa stage: if the cached bar facts do not match the current act, the engine measures it on the fly (up to 4 commands, 600 s each). Allow a generous client-side call timeout. Gated (semi-auto).
« Advance the team loop by one step: give me the contract for the next act. »
effortless_crew_step| Name | Type | Required | Description |
|---|---|---|---|
document | string | no | Id of the one OPALE framing document targeted by this contract, for a parallel round with several documents (default: all documents expected for the phase, in a single block). |
loop_init
effortless_loop_init — Stability: stable · project
Initializes the autonomous build loop (global goal). Gated execution tool (disabled in semi-auto).
« Initialize the autonomous build loop with the goal "ship the site module as version 1.4.1". »
| Name | Type | Required | Description |
|---|---|---|---|
goal | string | yes | Global goal of the autonomous loop. Required. |
loop_step
effortless_loop_step — Stability: stable · project
Advances the state machine of the autonomous loop (Plan→Implementation→Acceptance→Delivery). Runs test_command at acceptance. Gated (semi-auto).
« Advance the autonomous loop by one step, and run `pnpm test` at the acceptance stage. »
| Name | Type | Required | Description |
|---|---|---|---|
test_command | string | no | Shell command run for the acceptance step (default: the test cycle of the model of the first declared stack; required if no stack exposes a test cycle). |
provider_presets_list
effortless_provider_presets_list — Stability: stable · no project
Lists the provider presets (embedded + custom). Read-only.
« Which provider presets are available? »
effortless_provider_presets_listNo parameters.
provider_profile_init
effortless_provider_profile_init — Stability: stable · no project
(Re)generates the provider profile (tier×effort matrix) from a FAMILY preset, scope global|project. Does not overwrite without force=true. Returns a best-practices tip.
« Generate my global provider profile from the "anthropic" family preset. »
| Name | Type | Required | Description |
|---|---|---|---|
family | string | yes | Preset family: claude, codex, gemini, mistral, or a free-form name. Required. |
scope | string | no | Scope of the profile: global (default) or project. |
force | boolean | no | If true, overwrites an existing profile of this scope; default false refuses. |
provider_profile_show
effortless_provider_profile_show — Stability: stable · no project
Active provider (LLM) profile of the user (~/.effortless). Read-only.
« Show me my active LLM provider profile. »
effortless_provider_profile_showNo parameters.
task_classify
effortless_task_classify — Stability: stable · story
Classifies a task of the active story on 1+ routing axes (complexity, capability_tier, effort_level). At least one axis required; returns the resolved routing recommendation.
« Classify task TSK-03 as high complexity, using a top-tier model. »
| Name | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | Id of the task to classify (for example TSK-01). Required. |
complexity | string | no | Complexity axis: simple or complex; at least one axis is required. |
capability_tier | string | no | Capability tier axis: deep, standard or light; absent leaves it untouched. |
effort_level | string | no | Effort level axis: low, medium or high; absent leaves it untouched. |
task_route_show
effortless_task_route_show — Stability: stable · story
Resolved routing recommendation of a task: tier/effort → concrete capability (model + native effort) via the provider profile (project > global). Suggestion, never enforced.
« Which model and effort level do you recommend for task TSK-03? »
| Name | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | Id of the task whose routing recommendation is shown (for example TSK-01). Required. |