Back to the catalog

shadertoy

1.448 instalações · bfollington/terma

Open source Repository Open in the app JSON README (API)

About

Skill publicada por bfollington/terma, com 1.448 instalações medidas pelo skills.sh. Instale com: npx skills add bfollington/terma@shadertoy

Details

Kind
Agent skills
Topic
No topic detected
Publisher
bfollington
Origin
skillssh
Category
ferramentas
Stars
51
Forks
6
Open pull requests
1
Last push
2026-08-30T03:44:34Z
Repository state
ativo
Language
GDScript
License
CC-BY-SA-4.0
Added
2026-08-30 15:22:26
Updated
2026-08-30 15:22:26
Origin id
bfollington/terma/shadertoy

README

# Terma (གཏེར་མ)
[![CC BY-SA 4.0][cc-by-sa-shield]][cc-by-sa]

[cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/
[cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg

A highly-opinionated library of philosophy and process for developing software with LLMs.

Works with any agent that reads `SKILL.md` — Claude Code, Codex, Cursor, Gemini CLI,
Zed, Copilot and others — and installs as a Claude Code plugin marketplace. Both read
the same files.

## Installation

**Any agent** — Claude Code, Codex, Cursor, Gemini CLI, Zed, Copilot and others,
via the [skills CLI](https://skills.sh):

```
npx skills add bfollington/terma
```

Add `-s convergent-planning,surface-forks` to take only some, or `-l` to list what's
there without installing.

For every project on the machine rather than the current one, install globally:

```
npx skills add bfollington/terma -g --skill '*' --agent '*' -y
```

Skills land in `~/.agents/skills/` — that is the real content, and the directory to
back up or edit. How each agent picks them up from there varies: some get a symlink
farm of their own (`~/.claude/skills/` is symlinks pointing back into `.agents`),
while others — Codex among them — read `~/.agents/skills/` directly and get no
per-agent directory at all. An empty `~/.codex/skills/` is not a failed install.

Update later with `npx skills update -g`. The repo is the source, so local edits under
`~/.agents/skills/` are overwritten on the next update — change `plugins/` and push
instead.

**Claude Code**, as a plugin marketplace:

```
/plugin marketplace add <git-url-or-local-path>
/plugin install terma@terma
/plugin install terma@tsal
```

Or during development:

```
claude --plugin-dir ./plugins/terma --plugin-dir ./plugins/tsal
```

Both work off the same files — the skills CLI reads `.claude-plugin/marketplace.json`
to find the plugin roots, so there is one source of truth and no duplication.

Pick one for Claude Code rather than running both: the plugin presents skills as
`terma:surface-forks` and a global install presents the same skill as `surface-forks`,
so together they show up twice. The one thing only the plugin carries is
`plugins/terma/agents/` — the skills CLI installs skills, not subagents, so a global
install leaves those 6 behind. Copy them to `~/.claude/agents/` if you want them.

## What's in it

Skills, not procedures. Each one is an index card of crystallized wisdom meant to change how a
situation is seen before anything is done — dense enough to be worth loading, narrow enough to
compose with the others. Most fire on their own when the situation calls for them.

**Thinking about change**

| Skill | The idea |
|-------|----------|
| `surface-forks` | Find what a change collides with before making it, then name the routes through |
| `convergent-planning` | A plan is a sequence of ambiguity collapses; a step nothing could contradict is not a step |
| `concurrent-change` | What can happen at once is decided by what the pieces must agree on |
| `idea-to-prototype` | Open, then close, then open — and find the fastest thing that would settle it |

**Thinking about code**

| Skill | The idea |
|-------|----------|
| `writing-code` | Values over places, data over ceremony, the program as the story of what it does |
| `domain-modeling` | The model is a claim about the world; the words are the model |
| `decomposition` | Boundaries isolate change, not enable reuse — cut by what changes together |
| `implement` | Always know the distance to the last checkpoint; stop rather than compensate |
| `code-review` | Not whether the code is good — what it will cost the next person to change it |
| `investigate-debug` | The discipline of not knowing yet; every action should divide the possibilities |

**Getting oriented, and everything else**

| Skill | The idea |
|-------|----------|
| `orient` | Build a model that predicts, not a summary that covers |
| `research` | Answer the question actually asked, at a confidence stated honestly |
| `ideate` | A deck of moves — good thinking is playing the right card at the right time |
| `authoring-skills` | Say the thing that is not already known; cut rather than append |
| `skill-improver` | Turn real friction into a change, usually a sharper sentence rather than a new one |

`plan` routes to whichever of the planning skills the moment calls for.

## Patterns

- feature dev: `orient`, `plan`, `surface-forks`, `implement`, `code-review`
- research: `orient`, `research`
- something is broken: `investigate-debug`
- a new idea: `ideate`, `idea-to-prototype`

## Structure

```
.claude-plugin/marketplace.json   # Marketplace manifest
plugins/terma/                    # Process & philosophy plugin
  .claude-plugin/plugin.json      # Plugin manifest
  agents/                         # Subagent definitions
  skills/                         # One directory per skill, each a self-contained SKILL.md
plugins/tsal/                     # Domain-specific skills plugin
  .claude-plugin/plugin.json      # Plugin manifest
  skills/                         # Domain skills (bevy, godot, strudel, etc.)
```

## Customizing

Edit anything under `plugins/terma/` or `plugins/tsal/`. Each skill is self-contained — there are
no shared includes to chase, so a skill can be rewritten or deleted without touching anything else.
`authoring-skills` describes what a good one looks like if you want to add your own.

`CANDIDATES.md` lists skills worth writing and the reasoning for each, deliberately unwritten
until real friction calls for them.

## License

This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).

More