Objectives
An objective is a question that people write for a pack, based on the work they do. Adding objectives starts the pack’s calibration. Calibration tests objectives first. Over MCP, objectives are called target questions. Calibration also writes its own test questions from the pack’s documents and data. Those questions do not come from the work people do. Questions written from real workflows make the pack’s readiness a useful measure.
In the CLI, commands that act on a whole pack take the pack’s slug or id. Commands that act on one objective take the objective’s id and find the pack from it.
See Objectives for writing good ones, and Calibration for following the calibration they start.
Brainstorm objectives with the user
Section titled “Brainstorm objectives with the user”brainstorm guides a conversation that starts from your workflows. The assistant starts from the work the pack supports and suggests the questions that come up at each step. It adds the questions you confirm. Calibration tests those questions first. Use it when you want a pack to answer your real questions well, or before you rely on a pack for a workflow. The edisyl app runs the same brainstorm during a pack’s setup.
| Input | Type | Required | Meaning |
|---|---|---|---|
pack |
string | No | The pack’s name or slug. If you leave it out, you are asked for it. |
Returns the playbook for the assistant to follow. The tool does not read or change anything. The questions are added with target_questions_create.
Permission: needs steer access on the pack.
“Help me work out which questions the growth-metrics pack should answer for our month-end close.”
Add objectives
Section titled “Add objectives”target_questions_create adds target questions to a pack. Adding them starts the pack’s calibration. Calibration writes an answer key for each question from the pack’s own sources. It then adds the question to the pack’s tests, ahead of the questions calibration writes itself. Pack health counts the question after the next test run.
| Input | Type | Required | Meaning |
|---|---|---|---|
packId |
string | Yes | The pack’s id or slug, from list_packs. |
questions |
object[] | Yes | 1 to 200 questions. Each has a question (the asker’s own words, up to 2,000 characters) and an optional topic (up to 200 characters) for the workflow it belongs to. |
Returns { items, skipped, refused }. A question the pack already has, with any spacing or case, is skipped. A refused question comes back in refused with its reason. The other questions are still added. To avoid adding a question twice, check target_questions_list first.
“Add these to the growth-metrics pack: ‘How many orders last week?’ and ‘Orders by region last week?’, both under the weekly review.”
When you already have the wording:
edisyl pack objectives add <pack> --question "Total volume last 30 days" --topic volume --hint "use the transfers table"edisyl pack objectives add <pack> -f questions.json # JSON array of {question, hint?, topic?}cat questions.json | edisyl pack objectives add <pack>| Flag | Behavior |
|---|---|
--question <text> |
A question to add. Repeatable. |
--hint <text> |
A hint that guides the answer. Applies only with a single --question. |
--topic <topic> |
The workflow the question belongs to. Applies only with a single --question. |
-f, --file <path> |
A JSON array of {question, hint?, topic?}, or - for stdin. |
Turn notes into objectives
Section titled “Turn notes into objectives”edisyl pack objectives structure <pack> -f notes.md --dry-run # preview, nothing writtenedisyl pack objectives structure <pack> -f notes.md # create thempbpaste | edisyl pack objectives structure <pack> # or pipe a blob inedisyl pack objectives structure <pack> --text "how many orders last week? and by region?"One LLM call splits free-form text (meeting notes, a wishlist, Q:/hint: pairs) into questions with hints and topics. Use --dry-run to review the questions before you create them.
| Flag | Behavior |
|---|---|
-f, --file <path> |
File that holds the text, or - for stdin. |
--text <blob> |
The text, given inline. |
--dry-run |
Show the structured objectives without creating them. |
-d, --data-source-id <id> |
Records which source the objectives came from. It does not change the result. |
See what a data source can support
Section titled “See what a data source can support”edisyl pack objectives examples <pack> --limit 10edisyl pack objectives examples -d <data-source-id>Uses an LLM call to draft examples of questions a data source can answer. Nothing is created.
| Flag | Behavior |
|---|---|
--limit <n> |
How many examples to draft, 1 to 10. |
-d, --data-source-id <id> |
Which source’s catalog to read. |
List objectives
Section titled “List objectives”target_questions_list lists the questions people have written for a pack.
| Input | Type | Required | Meaning |
|---|---|---|---|
packId |
string | Yes | The pack’s id or slug. |
status |
string | No | pending or archived. |
Returns { items }. Each item’s state is one of the values below, or null if you cannot read the pack’s work.
“Which of our target questions on growth-metrics are failing?”
edisyl pack objectives list <pack>edisyl pack objectives list <pack> --topic activityedisyl pack objectives list <pack> -d <data-source-id> # only objectives this source is a lens onedisyl pack objectives get <objective-id>| Flag | Behavior |
|---|---|
--topic <topic> |
Only objectives under this topic. |
--status <status> |
pending or archived. |
-d, --data-source-id <id> |
Only objectives this source is a lens on. |
get shows one objective by its id.
Each objective has a state. The state comes from its calibration:
| State | Meaning |
|---|---|
waiting |
Calibration hasn’t written a test for this wording yet. |
calibrating |
Its test has an answer key, but no test run has graded it against that key yet. |
passing |
The newest test run that asked it graded it correct. |
failing |
The newest test run that asked it graded it wrong. |
declined |
The pack’s sources have no information about it. To change this state, add a source that does. |
archived |
A person set it aside. |
An objective’s status is set only by a person. It is pending or archived.
Edit or archive an objective
Section titled “Edit or archive an objective”edisyl pack objectives update <objective-id> --question "<new wording>" --hint "<better steering>"edisyl pack objectives update <objective-id> --topic <topic> --status pendingedisyl pack objectives archive <objective-id>| Flag | Behavior |
|---|---|
--question <text> |
New question text. |
--hint <text> |
New hint. |
--topic <topic> |
New topic. |
--status <status> |
pending or archived. |
archive sets an objective aside without deleting it.
Was this page helpful?
Thanks for the feedback.
