Skip to content

Run the work ​

Epics, their stories and their tasks make up the work tree. You come here to ask the agent to create it, move it forward, pause it or close it, without touching the files yourself.

What you ask the agent ​

💬 You ask your agent

« Open an epic "Data export" in the Data zone. »

→ The agent callseffortless_epic_start
  • zone = Data
  • title = Data export
💬 You ask your agent

« Create a story "CSV export" in this epic and activate it. »

→ The agent callseffortless_story_start
  • title = CSV export
  • activate = true
💬 You ask your agent

« Add three tasks to the story: the format, the button, the tests. »

→ The agent callseffortless_task_add
  • title = The format
💬 You ask your agent

« Set task TSK-02 of story 003 of epic 012 to in progress. »

→ The agent callseffortless_task_update
  • epic_id = 012
  • story_id = 003
  • task_id = TSK-02
  • status = Doing
💬 You ask your agent

« That is enough for today: pause the story, reason: we are waiting for the customer's answer. »

→ The agent callseffortless_story_pause
  • reason = We are waiting for the customer’s answer
💬 You ask your agent

« Pick up story 003 again, yesterday's. »

→ The agent callseffortless_story_activate
  • story_id = 003
💬 You ask your agent

« This story is done: close it, then close the epic. »

→ The agent callseffortless_story_complete
💬 You ask your agent

« Story 004 was replaced by 006: mark it as such. »

→ The agent callseffortless_story_supersede
  • story_id = 004
  • by = 006
💬 You ask your agent

« Retire story 007: the feature is dropped. »

→ The agent callseffortless_story_retire
  • story_id = 007
  • reason = feature dropped

What the agent does ​

Create and activate an epic ​

  1. effortless_epic_start: creates the epic in a zone, with a title and an optional description. By default (activate set to true) it becomes the active epic; activate: false just creates it.
  2. effortless_epic_activate: reactivates an existing epic (epic_id) without going through a story. It clears the active story. Replayed, it changes nothing.

Create and activate a story ​

  1. effortless_story_start: creates the story in the active epic or in epic_id. Useful parameters: title, slug, zone, depends_on, objective, activate. kind is opale (default, with framing) or fix (direct fix, see Frame work with OPALE). taskless_reason says why a story will have no task (pure framing, milestone, decision).
  2. effortless_story_activate: activates an existing story (story_id) and reopens its epic if needed.
  3. effortless_story_objective: sets or corrects the story's objective, in one or two sentences. An empty string removes it.

Add tasks ​

  1. effortless_task_add: adds a Todo task to the active story (or to story_id). The agent can pass description, phase, stack (the development standards that apply to it; a standard that does not exist is refused) and an optional routing classification (complexity, capability_tier, effort_level). The engine returns the TSK-NN identifier.
  2. effortless_story_items: reads back a story's decisions, questions and tasks.

Move a task forward ​

effortless_task_update changes a task's status (Todo, Doing, Done, shown as To do, In progress, Done in the app), its title, its description and its result. It requires at least one field.

  • Moving to In progress is refused while the story's framing is not complete, or while a task this one depends on is not done.
  • When finishing a task, the agent fills in result: what it produced, as observed (files, verbs, measurements). This text appears on the task's page in the Backlog.

Pause, resume, reloop ​

  1. effortless_story_pause: pauses the story (the active one by default), dates the pause and releases the active story. reason is mandatory. No task is touched.
  2. effortless_story_activate resumes it, and you find everything as it was left.
  3. effortless_story_reloop: sends the active story back to an earlier OPALE phase (target_phase).

Close, supersede, retire, archive ​

  1. effortless_story_complete: closes the story. It must have at least one task, and all of them must be done.
  2. effortless_story_supersede: declares that the story (story_id) is replaced by another one in the same epic (by). It no longer blocks closing the epic and is not counted as delivered.
  3. effortless_story_retire: retires a not started story that will not be done, with its reason (reason, required). It no longer blocks closing the epic, can be archived, and is never counted as delivered; the register shows "retirée :" followed by the reason. The verb refuses a story with a task already done: close it, or declare it superseded.
  4. effortless_story_archive: archives a story that is already done, superseded or retired. The .effortless/crew_contracts/<epic>/<story>/ folder of its contracts is destroyed. Replayed, it changes nothing.
  5. effortless_epic_complete: closes the epic (the active one by default). Every story must be done, superseded or retired. Closing resolves no evolution of the register: those still In progress are named in the reply (evolutions_maintained), and the agent asks you what to do with them (see Evolutions register).

What you get ​

  • The work tree in the Backlog screen: epics, stories, tasks, with their phase and status. A story's page shows its objective; a task's page shows what it produced.
  • The task in progress and the story's task counter on the Dashboard and in the Tasks screen.
  • The same information rendered as Markdown in blueprints/ (for example blueprints/3-Backlog.md).

When the agent is refused ​

SituationWhat the refusal saysWhat to do
No active story and no story_id passedpilotage:noActiveStoryPass epic_id and story_id, or activate a story.
Activating an epic without naming itpilotage:epicActivateNeedsIdName the epic; epic_start creates a new one.
Activating an unknown epicpilotage:epicUnknownCannotActivateUse epic_start to create one, or status to see the existing ones.
Activating an epic that is already closedpilotage:epicDoneCannotActivateActivate one of its stories: that reopens the epic.
Closing a story with no taskpilotage:storyNoTaskDeclare the work with task_add before closing.
Closing a story with tasks not donepilotage:storyTasksNotDoneFinish the tasks.
Closing an epic with stories not donepilotage:epicStoriesNotDoneClose each story named by the refusal, or declare it superseded.
Pausing a story without a reasonpilotage:storyPauseNeedsReasonPass reason.
Pausing a story that is already donepilotage:storyDoneCannotPauseReopen it with story_activate if the work resumes.
Unknown storypilotage:storyUnknownRead the existing stories again (story_items, project_tree).
Superseding a story by itself or by a story of another epicpilotage:supersederInvalidPass in by another story of the same epic.
Superseding a story that is already closedpilotage:storyAlreadyClosedNothing: a closed story stays closed.
Archiving a story that is not donepilotage:storyNotDoneCannotArchiveClose it first.
Updating a task with no fieldpilotage:taskUpdateEmptyPass at least status, title, description or result.
Task to In progress while the framing is unfinishedcadrage:phaseIncompleteProvide the missing documents, or open a direct fix (kind: "fix").
Task to In progress while a task it depends on is not donerefusal without a code, naming the dependencyFinish the dependency task first.
Development standard in stack that does not existpilotage:nddUnknownPass the name of a standard present in .ai/ndd/.

Effortless — ArboRithm