Skip to content
Back to skills

Seed Gates

ASecurity

Scan a repo's package.json scripts, CI workflows, and equivalent manifests, then SUGGEST a committed .claude/tale-mode.json gate list for tale-mode's Stop-hook loop — suggestions only; this skill never writes the config unasked, never trusts it, and never arms anything. Invoke ONLY when the user explicitly asks to seed, suggest, or set up tale-mode gates for a repo.

  • 36 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 30, 2026
ai-agentsrustgoshellgit

Security analysis

A100/100

Scanned August 30, 2026

npx -y skills add alicicek/tale-mode --skill seed-gates --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Seed Gates?

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

Security grade badge for Seed Gates
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alicicek-seed-gates/badge)](https://www.skillsdirectory.com/skills/alicicek-seed-gates)

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: seed-gates
description: >-
  Scan a repo's package.json scripts, CI workflows, and equivalent manifests, then SUGGEST a
  committed .claude/tale-mode.json gate list for tale-mode's Stop-hook loop — suggestions only;
  this skill never writes the config unasked, never trusts it, and never arms anything. Invoke
  ONLY when the user explicitly asks to seed, suggest, or set up tale-mode gates for a repo.
---

# Seed the committed gates (suggest-only)

Help the user pick the `gates` for a committed `.claude/tale-mode.json` — the config tale-mode's
Stop hook enforces during a kickoff phase (once the user trusts its content-hash; see the `trust`
skill). **Your output is a suggestion the user reviews — never silently write the config, and never
touch the trust store.**

## 1. Inventory candidates mechanically — don't guess from memory

Read the repo's own definition of "green":

- every `package.json` → the `scripts` block (root first; workspaces if a monorepo)
- CI workflows → `.github/workflows/*.yml` (or the host's equivalent) — the commands CI actually
  runs are the strongest signal of what "passing" means here
- other manifests as present: `Makefile`, `pyproject.toml`/`tox.ini`, `Cargo.toml`, `go.mod`
  (→ `go test ./...`), a repo-local `tests/` runner script

## 2. Filter hard — a gate runs at EVERY turn-end during a phase

Keep only commands that are **hermetic and terminating**:

- ✅ local + deterministic: typecheck (`tsc --noEmit`), lint, format-check, unit tests, a build
  that's reasonably fast, a repo-local test script
- ❌ anything that doesn't terminate: `dev`, `start`, `serve`, `--watch`
- ❌ anything non-hermetic: network calls, fresh dependency installs, deploy/publish/release,
  E2E needing a live server or credentials, destructive/generative steps (db migrations, codegen
  that rewrites files — a gate must be read-only/idempotent, it runs repeatedly)
- ❌ anything slow enough to hurt: the default per-gate timeout is 120s (`TALE_CHECK_TIMEOUT`);
  a 10-minute suite belongs in CI, not a turn-end gate
- Each gate runs as **ONE shell script** — a multi-line JSON string is allowed (it executes as a
  single script, not split per line), but prefer one command per gate for readable failure output.

## 3. Verify each candidate by RUNNING it, then present

Run every surviving candidate once from the repo root and record its exit code. A suggested gate
that can't run (missing dep, wrong path) — or that always fails — is worse than none: it would trap
the loop, and the user would "fix" it by weakening the config. Drop or flag anything that isn't
green on the current tree, and say why.

Then present:

1. the suggested `.claude/tale-mode.json` as a fenced snippet, e.g.
   ```json
   { "gates": ["npm run -s typecheck", "npm test --silent"] }
   ```
   (`gates` is the only key the hook reads — don't add decorative fields)
2. one line per gate: where it came from (`package.json scripts.typecheck`, `ci.yml:24`) and its
   verified exit code
3. what you deliberately left out and why (the ❌ list above — name the rejects, don't hide them)

## 4. Hand off — the user decides

Only write the file if the user says so (writing it is safe in itself — it's inert until trusted —
but it's their repo and their review). Then point them at the two user-only follow-ups you must
NOT do yourself: committing the config, and trusting its content-hash (the `trust` skill has the
exact commands). Remind them a later edit to the config changes its hash and needs a re-trust.

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.