> ## Documentation Index
> Fetch the complete documentation index at: https://code.dcycle.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Goals & Actions

> Set targets and plan the work against them, linked to the risks, IROs, data points and KPIs they answer

<Note>
  **Early Access** - The Dcycle CLI is currently available for enterprise customers.
  [Contact us](/docs/support) to learn more about access.
</Note>

## Overview

Goals and actions are the planning layer of a project. They are shared by ISO management-system projects and CSRD ones, and the difference is only what they point at.

* A **goal** is a target with numbers: a baseline, where it stands now, and what it aims at. Progress is how far it has travelled from baseline to target.
* An **action** is a piece of work. It has one **primary source** — the thing it exists to address, which is what its code is derived from — and may address further sources on top.

Both hang off **sources**, and a source is any of:

| Source type      | What it is                                                          |
| ---------------- | ------------------------------------------------------------------- |
| `iro`            | An impact, risk or opportunity from a double materiality assessment |
| `csrd_datapoint` | An ESRS data point                                                  |
| `custom_kpi`     | A custom KPI                                                        |
| `objective`      | Another goal                                                        |
| `risk`           | An ISO risk                                                         |
| `opportunity`    | An ISO opportunity                                                  |
| `nonconformity`  | An ISO non-conformity                                               |

Links are written as `type:id`, comma-separated, rather than JSON.

<Note>
  A goal linked to **exactly one** custom KPI also reports that KPI's latest submissions, so its current value tracks the KPI instead of being typed by hand. Zero or several KPI links leave the numbers as entered.
</Note>

### Available Commands

| Command                          | Description                                              |
| -------------------------------- | -------------------------------------------------------- |
| `dcy goal list`                  | List a project's goals with progress and links           |
| `dcy goal show <goal-id>`        | Show one goal                                            |
| `dcy goal create`                | Create a goal                                            |
| `dcy goal edit <goal-id>`        | Update a goal                                            |
| `dcy goal delete <goal-id>`      | Delete a goal                                            |
| `dcy action list`                | List a project's actions                                 |
| `dcy action show <action-id>`    | Show one action                                          |
| `dcy action create`              | Create an action against a source                        |
| `dcy action edit <action-id>`    | Update an action                                         |
| `dcy action delete <action-id>`  | Delete an action                                         |
| `dcy action links --type <kind>` | The reverse view: what each source is being addressed by |

Both commands require `--project`. `--org` overrides the default organization.

***

## List Goals

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy goal list --project <project-id>
dcy goal list --project <project-id> --status open
```

Output:

```
Showing 3 of 3 goals
OBJ-001 | Cut scope 1 and 2 emissions 42% by 2030 | open | 29% (4200 tCO2e → 3696 tCO2e → 2436 tCO2e) | linked: iro, iro, iro
OBJ-002 | Zero packaging waste to landfill by 2028 | open | 37% (38 % → 24 % → 0 %) | linked: iro, iro, iro
OBJ-003 | Halve the accident frequency rate by 2027 | open | 47% (18.4 → 14.1 → 9.2) | linked: iro, iro, iro
```

The three numbers are baseline → current → target, and the percentage is the distance covered between the first and the last. It works for reduction and growth goals alike, and is left blank when baseline equals target.

### Flags

| Flag       | Default | Description      |
| ---------- | ------- | ---------------- |
| `--status` | —       | Filter by status |
| `--page`   | `1`     | Page number      |
| `--size`   | `100`   | Page size        |

***

## Create a Goal

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy goal create --project <project-id> \
  --title "Cut scope 1 and 2 emissions 42% by 2030" \
  --baseline 4200 --current 3696 --target 2436 --unit "tCO2e" \
  --start-date 2024-01-01 --end-date 2030-12-31 \
  --link iro:<iro-id>,iro:<other-iro-id>
```

### Flags

| Flag            | Required | Description                                     |
| --------------- | -------- | ----------------------------------------------- |
| `--title`       | Yes      | Goal title                                      |
| `--description` | —        | Longer description                              |
| `--baseline`    | —        | Value the goal improves from                    |
| `--current`     | —        | Where it stands now                             |
| `--target`      | —        | Value it aims at                                |
| `--unit`        | —        | Unit of the values, e.g. `%`, `tCO2e`, `t/year` |
| `--start-date`  | —        | `YYYY-MM-DD`                                    |
| `--end-date`    | —        | `YYYY-MM-DD`                                    |
| `--link`        | —        | Sources as `type:id`, comma-separated           |

<Note>
  Without all three of `--baseline`, `--current` and `--target`, progress cannot be computed and the goal lists with no percentage.
</Note>

***

## Edit a Goal

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy goal edit <goal-id> --project <project-id> --current 3500
dcy goal edit <goal-id> --project <project-id> --status closed
```

Takes the same flags as `create`, plus `--status`. `--start-date` and `--end-date` are create-only.

<Warning>
  `--link` **replaces** the whole set of links, it does not add to it. Pass every link you want to keep.
</Warning>

***

## List Actions

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy action list --project <project-id>
```

Output:

```
Showing 5 of 5 actions
ACC-001 | Move all sites to renewable electricity | open | improvement | addresses: iro, iro, OBJ-001
ACC-004 | Mechanical handling aids in the six worst sites | open | corrective | addresses: iro, iro, OBJ-003
```

`addresses` lists every source, primary first.

***

## Create an Action

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy action create --project <project-id> \
  --title "Move all sites to renewable electricity" \
  --type improvement --deadline 2026-12-31 --cost 45000 \
  --source iro:<iro-id> \
  --link iro:<other-iro-id>,objective:<goal-id>
```

### Flags

| Flag            | Required | Default       | Description                                              |
| --------------- | -------- | ------------- | -------------------------------------------------------- |
| `--title`       | Yes      | —             | What will be done                                        |
| `--source`      | Yes      | —             | Primary source as `type:id`                              |
| `--type`        | —        | `improvement` | `immediate`, `corrective`, `preventive` or `improvement` |
| `--description` | —        | —             | Longer description                                       |
| `--deadline`    | —        | —             | `YYYY-MM-DD`                                             |
| `--cost`        | —        | —             | Expected cost                                            |
| `--link`        | —        | —             | Further sources as `type:id`, comma-separated            |

<Warning>
  `--source` takes exactly one source and is what the action's code is derived from. Everything else goes in `--link`; do not repeat the primary there.
</Warning>

***

## The Reverse View

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy action links --project <project-id> --type iro
```

Output:

```
IRO-003 (1 goal, 1 action)
  goal   OBJ-001  Cut scope 1 and 2 emissions 42% by 2030  29%
  action ACC-001  Move all sites to renewable electricity
IRO-007 (1 goal, 0 actions)
  goal   OBJ-002  Zero packaging waste to landfill by 2028  37%
```

This answers "which IROs have nothing planned against them" in one call. **Sources missing from the output have nothing planned at all** — and a source listed with `0 actions` has a target but no work behind it, which is usually the more interesting gap.

`--type` accepts the same seven source kinds as `--link`. An unknown one fails locally, without a request.

***

## Example: plan against a materiality assessment

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
PROJECT=<project-id>

# What came out of the assessment
dcy csrd iro list --year 2024

# A target for the biggest one
dcy goal create --project $PROJECT \
  --title "Cut scope 1 and 2 emissions 42% by 2030" \
  --baseline 4200 --current 3696 --target 2436 --unit tCO2e \
  --link iro:<iro-id>

# The work that gets you there, pointed at both the IRO and the goal
dcy action create --project $PROJECT \
  --title "Move all sites to renewable electricity" \
  --source iro:<iro-id> --link objective:<goal-id> \
  --type improvement --deadline 2026-12-31

# What is still unaddressed
dcy action links --project $PROJECT --type iro
```

## Related

<CardGroup cols={2}>
  <Card title="CSRD" icon="leaf" href="/cli/csrd">
    Double materiality and IROs, the sources these goals answer
  </Card>

  <Card title="Projects" icon="clipboard-list" href="/cli/projects">
    The projects goals and actions live in
  </Card>
</CardGroup>
