AGENTS.md · git:20261029.7f379ee · 2026-10-29 · sha256 958b84035ba1b175

AGENTS.md git:20261029.7f379eeA

Immutable. This exact content never changes and is served at /api/v1/blob/958b84035ba1b175.

# singularskills

Instructions for agents working on this repository. singularskills is one pack of Agent Skills for digital production work: 283 skills across 16 domains, ordered into gated workflows. Users install it with `npx skills add bromso/singularskills` (any agent) or as the `singularskills` Claude Code plugin; this file is about changing the pack, not using it.

## Layout

```
skills/<domain>-<skill>/     # the pack, flat: SKILL.md, scripts/gate.sh (when gated), references/
skills/workflow/             # the conductor skill: runs a workflow phase by phase
workflows/<name>.yml         # one workflow: phases, member skills, artifact, requires
references/<domain>/         # canonical reference docs shared by several skills of a domain
references/stacks/           # stack profiles (empty until project 2; see "Stack" below)
evals/<skill>/               # claude plugin eval cases: prompt.md, graders/, fixtures, scaffold
adapters/claude/             # generated: command wrappers, gates.json, gate-hook.sh, hooks.json
adapters/gemini/commands/    # generated: Gemini CLI command wrappers
.claude-plugin/              # the one Claude plugin manifest and its marketplace entry
packages/skill-validator/    # validates every SKILL.md (lint:skills)
packages/pack-tools/         # pack checks and generators (check:pack, gen-*)
apps/docs/                   # the docs site (Fumadocs + Next.js, static export)
scripts/                     # run-evals.sh, smoke-install.sh, check-rename.sh
docs/superpowers/            # specs and plans (history; not rewritten)
```

The domains are `accessibility`, `accounting`, `bookkeeping`, `branding`, `coaching`, `compliance`, `design`, `development`, `finance`, `leadership`, `legal`, `marketing`, `project-management`, `research`, `security` and `singular` (the cross-domain skills). A skill's folder name is `<domain>-<skill>` and equals its frontmatter `name`; it is invoked as `/<domain>-<skill>`.

## How a skill, a workflow file and a gate relate

- A **workflow file** (`workflows/design.yml`) lists phases. Each phase names its member `skills`, the `artifact` it writes (for example `02-define.md`) under `.singularskills/<folder>/<project>/`, and the artifacts it `requires` from earlier phases.
- A **skill** carries `metadata.workflow`, `metadata.phase` and `metadata.artifact` in its frontmatter, matching its workflow file. Its Prerequisites section tells the agent to run `scripts/gate.sh <project>` and to stop if it fails; the prose names the required files too, so the gate holds in agents that do not run scripts.
- A **gate** (`skills/<skill>/scripts/gate.sh`) is generated from the workflow file by `gen-gates`: it exits 1 naming each missing required artifact, else 0. In Claude Code, `adapters/claude/gate-hook.sh` (with `gates.json`, also generated) blocks the write itself. `--skip-checks` bypasses a gate and appends a `skipped` line to the run log, `.singularskills/log.jsonl`.
- The **conductor** (`skills/workflow`) reads the workflow file, runs each phase's members, and records `run-started` and `phase-approved` lines in the run log; a phase is complete only when approved.

Edit the workflow file, never a generated gate or adapter, then regenerate.

## Checks

Run from the repository root:

```bash
bun install
bun run lint:skills    # skill-validator over every SKILL.md
bun run check:pack     # pack-tools: workflows, gen-gates/gen-references/gen-adapters --check, fixers --check, counts
bun run test           # Vitest in every package
bun run evals --dry    # list the eval cases; fails if a prompt names its own skill (spends nothing)
bun run check          # Biome (tabs, width 100)
```

`bun run evals` without `--dry` runs `claude plugin eval` and spends credits (capped by `EVALS_MAX_COST_USD`). `scripts/check-rename.sh` fails on any mention of the old project name outside the history allowlist.

To regenerate after editing workflows, references or skill frontmatter, from `packages/pack-tools` (after `bun run build`): `bun run gen:gates`, `bun run gen:references`, `bun run gen:adapters`. For the docs site, from `apps/docs`: `bun run gen:data`.

## Stack

A project that uses the pack can describe its stack once, in a "Stack" section of its own `AGENTS.md`, so that skills which build, test or lint can use its commands instead of guessing. The section is one fenced block of `key: value` lines: `stack` names the language, framework and runtime; `test` and `lint` are the exact commands to run; `layout` says where source, tests and docs live. No skill reads it yet; this is the shape only.

```yaml
stack: TypeScript, Next.js 16, Bun 1.3
test: bun run test
lint: bun run check
layout: src/ for source, src/**/*.test.ts for tests, docs/ for documentation
```

Project 2 fills `references/stacks/`.