Skip to content
Back to skills

State

ASecurity

STATE, the one page that says where a project stands (.bonsai/STATE.md, bonsai.state/1): its fields, their allowed values and its template. Use it to rewrite STATE, or to add one to a project that has none.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 10, 2026
developmentgo

Security analysis

A100/100

Scanned November 10, 2026

npx -y skills add LastStep/Bonsai --skill state --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of State?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for State
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/laststep-state/badge)](https://www.skillsdirectory.com/skills/laststep-state)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: state
description: "STATE, the one page that says where a project stands (.bonsai/STATE.md, bonsai.state/1): its fields, their allowed values and its template. Use it to rewrite STATE, or to add one to a project that has none."
---

<!-- Generated by go generate from Bonsai's code (internal/reference/gen); never edit it by hand: a test rebuilds it and fails on any difference. -->

# STATE: where the project stands

**What it is.** `.bonsai/STATE.md` is one page, in the format `bonsai.state/1`: a short frontmatter and a free body saying where the project stands now, what is next, what is open and what was decided lately. Every project has it at that place (it is no `bonsai.yaml` setting). It is committed and not person-only.

**When to use this skill.** A new session reads STATE first. Rewrite it whole, never append, whenever where the project stands changes, and set `updated` and `updated_by` as you do. `bonsai init` writes it from the template below when the project has none (from then on it is the project's: no update writes over it, and `bonsai unlink` leaves it); a project linked before it had one writes it from the template itself. Its fields and allowed values are also printed by `bonsai check --schema bonsai.state`.

## Fields

| Field | Meaning | Allowed values | Example |
|---|---|---|---|
| `format` | The format and its version, always the first line; its comment points back to these docs | `bonsai.state/1` | `"bonsai.state/1"` |
| `updated` | The day the page was last rewritten, as text: rewrite it with the page, the UTC day from `bonsai now --day` | text matching `^[0-9]{4}-[0-9]{2}-[0-9]{2}$` | `"2026-10-08"` |
| `updated_by` | Who rewrote it: a role and its model, a person's name, or bonsai init for the first page | text | `"orchestrator (opus)"` |
| `labels` | The labels the page carries, by name (a label definition in force says which go on STATE); {} for none | a mapping | under Mappings, below |

## The template

What `bonsai init` writes, `updated` set to the day it runs:

```markdown
---
format: bonsai.state/1   # fields: bonsai check --schema bonsai.state; how to fill: skill base:state
updated: YYYY-MM-DD
updated_by: bonsai init
labels: {}
---

# Where this project stands

Rewritten whole whenever where the project stands changes; never appended to. A new session reads it first.

## Now

## Next

## Open questions

## Decided lately
```

## Mappings

The fields whose example is a mapping, written as STATE's frontmatter holds them: indented `key: value` lines, nested by the field's path. Never write a mapping with content on one line in braces (a flow mapping): Bonsai refuses the file, and in `bonsai.yaml` that stops every call until a person repairs it; `{}` alone is an empty mapping.

```yaml
labels:
  workflow.milestone: "v1"
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.