AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Write Skill

skill-tale-project-tale-write-skill · by tale-project

Use this skill whenever you author, edit, rewrite, split, merge, or move a skill — a Tale-specific repo-dev guide under .agents/skills/, or a generic workflow skill whose source of truth is builtin-configs/skills/ and is projected into .agents/skills/. It covers the description-as-invocation rule, the canonical SKILL.md skeleton, progressive disclosure, the five failure modes to prune against, le…

No reviews yet
0 installs
42 views
0.0% view→install

Install

$ agentstack add skill-tale-project-tale-write-skill

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-tale-project-tale-write-skill)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Write Skill? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

write-skill

A skill exists to wrangle determinism out of a stochastic system — so the agent runs the same process every time, not so it emits the same output. Predictability is the root virtue; every rule below serves it. A sloppy skill (stale paths, a vague description, 400 inline lines) is worse than none. Copy [SKILL_TEMPLATE.md](../SKILL_TEMPLATE.md) for the shape; this skill is the why.

Write a note first

Invoke write-notes and record your answers to this form before you author or edit the skill:

  • Skill & home: Describe the skill, the home it belongs in (.agents/skills vs builtin-configs/skills), and the single concern it owns.
  • Invocation: Describe its directive description — the situation and triggers that should make the agent load it.
  • Overlap: Describe what existing skill or section it overlaps and how you'll reuse or fold rather than duplicate.
  • Risks & unknowns: Describe where this skill might mislead an agent or collide with another, and how you checked.

The description does the invocation work

The agent decides whether to load a skill from its description alone — so it gets harder pruning than the body, and it must command the agent into the skill in the right situation, not merely describe it. A description that reads like a summary gets skipped; one that names the trigger and enforces the skill wins.

  • Lead with the directive + the situation. Open Use this skill whenever …

(or Read before …) — the capability and the command to load it, in a first sentence that stands alone (a terse harness listing may show only it).

  • Enumerate the triggers exhaustively, one per branch. The real file paths, verbs, and symptoms

someone hits when they need it ("fix", a pasted stack trace, editing convex/**). Distinct situations, not synonyms; adjectives aren't triggers. Over-cover rather than under-cover — a missed trigger is a skipped skill.

  • Enforce it. Close with the boundary (the sibling that owns the adjacent case — for a defect, use

fix-bug) and a "never do X without it" clause, so the agent can't default to a generic approach in the skill's situation.

  • Say nothing the body repeats. Identity, rationale, and how-to belong in the body.

The shape (copy the template)

SKILL.md ≤ ~150 lines, scannable in seconds:

  1. Frontmattername (== directory, dash-case) + description. Nothing else (that is all

every harness reads).

  1. Opener (1–2 sentences) — what it covers + the boundary, linking the sibling that owns the

adjacent case. Lead with the rule, not preamble.

  1. ## When this applies — mirror the description triggers; name real globs.
  2. ## The rules — non-negotiables, each with its why in the same breath. Name the guard that

enforces it (enforced by …) or mark it reviewer-caught.

  1. ## Patterns — minimal real do/don't, path:line when it helps. The smallest snippet that

makes the point.

  1. ## Companion files (only when depth warrants) — each with a one-line "read when".

Where a skill has a done-gate or a must-not-skip sequence (a "before you call it done", a pre-flight gate), write it as a true - [ ] checklist opened with "tick every box, or N/A with a reason; an unticked box means not done". A box the agent fills in beats a paragraph it skims (see Premature completion).

Progressive disclosure — three tiers

Rank every line by immediacy: in-skill steps (what every run needs) → in-skill reference (rules + patterns) → external pointer (a companion .md or a sibling skill). Inline what every branch needs; push behind a pointer what only some branches reach. Keep a concept's definition, rules, and caveats co-located under one heading — don't scatter it.

Prune against the five failure modes

Audit every skill — new or edited — against these. The fix for most is delete, not reword.

  • No-ops — a line the model already obeys by default. Test each sentence: _does it change

behaviour vs. the default?_ "Write clear names", "handle errors", "be careful" all fail — cut them. If a real rule reads weak, sharpen its leading word (be thoroughrelentless); don't add a sentence.

  • Duplication — one meaning in two places. Pick the owner skill; everyone else links it

(..//SKILL.md). One edit, one place.

  • Sediment — stale layers that accreted because adding felt safe and removing felt risky. **Cite

only verified paths**: ls/grep/read every path and command on the current branch before writing it. A stale reference is worse than no reference.

  • Sprawl — long even when every line is live and unique. Disclose reference behind a pointer;

split only when the cut earns it.

  • Premature completion — the agent stops a sequence early. Make done-vs-not-done a **true - [ ]

checklist it must tick** — each box a verifiable assertion, N/A allowed with a reason; only split to hide later steps if the rush survives a sharp checklist.

Leading words

A leading word is a compact concept the model already thinks with — it anchors behaviour and invocation in fewer tokens. Collapse a restated phrase into one: "fast, deterministic, low-overhead" → tight. Reach for a sharper word before you reach for another sentence.

One concern; mind the invocation axis; don't duplicate the ecosystem

If the name needs "and", it's two skills — fold a tiny adjacent topic into a section rather than spawn a near-empty skill. Invocation axis: a [.agents/skills/](../) skill is model-invoked — it surfaces by its description, and may also be human-invoked by name (/fix-bug, /create-pr, /review-pr) — these invocable workflows are themselves skills, not separate command files. Author a skill only when the agent (or another skill) must reach it on its own. And if a built-in/harness skill already does the job (react-doctor, code-review, claude-api), reference it — a custom skill must add Tale-specific value.

Homes — pick by audience

Decide who runs the skill, then pick its source of truth — three cases:

  • Repo-dev guide (Tale-specific, docs only) → [.agents/skills//](../). The source every

coding agent reads; skills:sync mirrors it into .claude/skills/ for Claude Code. May use repo paths and link siblings by file. write-skill, write-docs, write-translations live here.

  • Generic workflow skill (a senior-dev workflow that ALSO ships to product org agents) → source of

truth under [builtin-configs/skills//](../../../builtin-configs/skills/), with its name in the WORKFLOW_SKILLS allowlist in [tools/skills/src/sync.ts](../../../tools/skills/src/sync.ts). skills:sync projects it into .agents/skills// and on to .claude/skills/. Because it ships to agents working on any codebase, it must be generic and portable — no repo paths, no Tale rule names; cross-reference siblings by slug in prose, never by file link. implement-feature, fix-bug, … live here.

  • Product-only / integrated skillbuiltin-configs/skills// (document skills like pptx

embedded in the CLI binary, seeded per-org) or, when it is a self-contained Bun workspace, the root [skills/](../../../skills/) dir (baked into the sandbox image). Not projected into the guides.

Never hand-edit a generated copy. .claude/skills// is a mirror; .agents/skills// is a projection of its builtin-configs/skills/ source — edit the source, then bun run skills:sync. Scaffold any home with bun run gen skill (it prompts for the category). A shipped skill may carry runnable code in /scripts/, invoked skill-relative (bun scripts/.ts / python scripts/.py); bun scripts must be self-contained (only node:*, bun/bun:*, relative imports — skills:check enforces it).

Register it — non-negotiable

Adding a skill means adding its row to the skill index in [/AGENTS.md](../../../AGENTS.md); removing one removes that row; renaming updates it. The index is the map every agent reads — if it lies, agents load the wrong thing. A generic workflow skill also needs its name in the WORKFLOW_SKILLS allowlist in [tools/skills/src/sync.ts](../../../tools/skills/src/sync.ts) so it projects into the guides. Then run bun run skills:sync (the [@tale/skills](../../../tools/skills/) tool) to regenerate every projection and the .claude/skills/ mirror. Same change, every time.

Before the skill ships — tick every box

  • [ ] Frontmatter is name (== directory, dash-case) + description only — nothing else.
  • [ ] The description commands the agent into the skill — directive opener (Use this skill whenever …), exhaustive triggers, an enforcement / boundary clause, first sentence standing alone.
  • [ ] Pruned against the five failure modes — no no-ops, no duplication, every cited path verified on this branch, ≤ ~150 lines, and any done-gate written as a true - [ ] checklist.
  • [ ] Registered — its row is in the [/AGENTS.md](../../../AGENTS.md) index (and, for a workflow skill, its name is in WORKFLOW_SKILLS).
  • [ ] bun run skills:sync run, and the regenerated .claude/skills/ mirror (+ any projection) committed.
  • [ ] bun run skills:check passes — no drift, every shipped SKILL.md script ref resolves, bun scripts self-contained.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.