Skip to content
Back to skills

Thea

ASecurity

Log a break, mistake, error, bug, drift or bad result to Thea's failure ledger so the build prevents it. Use when the AI gets something wrong, or on /thea.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 13, 2026
ai-agentspythongoshellgit

Security analysis

A100/100

Scanned October 13, 2026

npx -y skills add HLIntel/thea-software --skill thea --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Thea?

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

Security grade badge for Thea
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hlintel-thea-thea-software/badge)](https://www.skillsdirectory.com/skills/hlintel-thea-thea-software)

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: thea
description: Log a break, mistake, error, bug, drift or bad result to Thea's failure ledger so the build prevents it. Use when the AI gets something wrong, or on /thea.
user-invocable: true
---

# thea — feed Thea's failure ledger

Portable across agents: a skill folder any skill-aware runtime can load, and plain instructions any
other model can follow. The ledger is `atlas.yaml/agent_failure_modes` in Thea Software
(github.com/HLIntel/thea-software); work in a branch, never on main. One entry per SHAPE.

## Before the change: read the lesson for it

`thea failures --for <file-or-task>` returns the few recorded shapes that share words with what you are
about to change, each with its tell and the move that replaces it (`do:`). Make that move; `thea successes
--for <task>` lists moves directly, each with when it applies and how to verify it was made.

## When to run it — people, agents and models alike

Run it the moment any of these happens, in the same turn, before moving on:
- a gate, test, build or check fails, or passes only after a retry;
- an answer, command, path or number turns out wrong, invented or stale;
- a guard fires on correct work, or stays silent on broken work;
- a document, count, name or version disagrees with the tree (drift);
- a result looks better than expected and nobody has attacked it yet;
- a person says "that's wrong", or you catch yourself undoing your own last step.

## Steps

1. **Name the shape, not the instance:** a snake_case id starting `a_` or `an_` that names the
   mechanism, never the file it happened in.
2. **Draft it:** `python scripts/atlas.py failures <id> --draft '<what happened>'` prints a recorded
   id's bump, or the nearest shapes and an entry line. Same mechanism: bump `sightings`, sharpen
   `tell`, go to 5. A second sighting means a guard is now owed.
3. **New shape, six lines or fewer:** `shape` (the mechanism), `looks_like` (how it reads from outside,
   usually as success), `tell` (the one observable that separates it from its neighbours),
   `sightings: 1`, `prevented_by`, and EITHER `enforced_by: [module.function]` OR `unenforceable` plus
   `closed_by` plus `intake: <contract version>`. Fill the drafted line's blank fields and run it:
   it generates every value and reads the entry back — never hand-quote YAML.
4. **Guard it now when you can:** a check that fails on the shape, a planted case in
   `scripts/atlas_test.py` with its expected count raised, and a clean sweep of the whole tree.
   Intake must graduate within two minor versions; the build refuses it after that.
5. **Fix the cause** when the break is in work this session produced. Never caption a bad result.
6. **Verify:** stage, `python scripts/atlas.py index --write`, stage, then `python scripts/atlas.py check`
   and `python scripts/atlas_test.py`, judged on the exit code; land with `python scripts/branchstate.py --land`.
7. **Report one line:** `id · new | sighting N · guarded | intake`.

A chat that cannot edit files answers with the entry itself, ready to paste. Stamp the contract
version, never a calendar date. Sweep with a scanner or `command grep`: an agent shell's grep may
skip ignored files.

## Success

One ledger entry exists, on a branch, naming a SHAPE:

- The entry is in `atlas.yaml/agent_failure_modes` on a **branch — never main** — and the branch or
  PR is named in the output. thea is the PUBLIC repo: no secret and no private path, ever.
- It names the SHAPE, not the instance, and states **the one observable that separates it** from
  correct behaviour. An entry a guard cannot be written against is prose.
- It carries the instance COUNT. A second sighting is a rule; a third means the evidence was there
  twice and nothing was built.
- A run that describes the failure in chat and lands no entry has failed, however good the
  description was.

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.

Comments

Loading comments…

Newsletter

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