varietyz/disciplined-ai-software-development/agent-authoring

Claude Code and agent skill by varietyz/disciplined-ai-software-development

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

The contract for authoring or auditing an invocable agent or a skill - what reaches an agent at startup, where a binding instruction must live, how a seat differs from an invocable agent, and which rules invert inside one. Use before writing, reviewing, correcting or auditing any file under the behavior tree's agents or skills folders, and whenever a spec's declaration appears not to take effect.

Install

npx vskill@latest install varietyz/disciplined-ai-software-development/agent-authoring

SKILL.md

agent-authoring

This skill carries what an author or auditor must not get wrong, and it does not restate any runtime's field list. That list belongs to the runtime's own documentation, which changes on the runtime's schedule rather than ours. BOOTSTRAP.md records, per runtime, the frontmatter keys it reads, what it delivers at startup and which tools it withholds, and adoption writes the adopted runtime's keys into {convention.agent_keys}. The directory is named by its slot rather than by a literal, because a citation carrying one folder name resolves only in the host that happens to use that name.

The delivery rule, which most specs get wrong

The body becomes the system prompt, and frontmatter is configuration, not instruction. A directive written into frontmatter governs nothing at invocation, and it reads as governing.

So the shipped specs carry only `name` and `description` in frontmatter, the two keys every runtime reads, and declare everything else in the body: the letter (THIS AGENT IS <LETTER>), the skills it loads (SKILLS: <name>, <name>), its non-goals and its operations. Adoption copies the SKILLS: line into the runtime's own preload key where the runtime has one.

An invocable agent's startup context is a closed list, and the list is the runtime's. It always holds the agent's own body as system prompt and the delegation message written by the party that spawned it. What else arrives (the host's instruction files, a repository snapshot, the named skills, a sibling roster) differs per runtime and is recorded in BOOTSTRAP.md. What never arrives on any runtime: the parent's conversation, any file the parent read, and any coordination surface. A party that needs a shared file opens it.

A seat and an invocable agent are different objects, and only one has a letter

A file under `{surface.agents}` is a bounded invocation, never a seat. It has no letter, no board record, no role document and no place in any reader set, and the role gate does not reach it, because that gate derives its roster from the board's own — ACTIVE records rather than from the agents directory.

seatinvocable agent
identitya letter, allocated in _agent-index.md, never reuseda name:, resolved per invocation
declarationa role document under the roles directory the configuration resolves, gatedits own body, which is the system prompt
receives the boardyes, and reads it wholenever, only the collab-status projection as injected context
ends its turnnever, because it waits with a commandalways, and returning is the contract

The turn-owning rules invert rather than lapse. _Never end a turn to wait_, _flow until the queue is empty_ and _quiet is not permission to report_ all bind a seat. Written into an invocable agent's body, they forbid the one thing it exists to do. An inert rule does nothing, while an inverted one is actively wrong while reading as governed, which is why this distinction belongs at authoring time rather than in a review.

The projection is the whole of what it knows about the board. A blocker not named in that one line does not exist for anything spawned, however loudly the board carries it.

Tools are withheld, and the withholding is silent

A runtime withholds some tools from every invocable agent regardless of what the spec lists. Where the question tool is among them, a rule about how to ask the owner is vacuous inside an invocable agent, because it has no channel to one. BOOTSTRAP.md names what each runtime withholds, including tools that differ between a foreground and a background run. The same definition can resolve to different tools depending on how it is launched, so a loop that depends on a withheld tool works in one launch mode and silently fails in the other.

Authoring rules that follow

  1. Put every binding instruction in the body, and keep frontmatter for configuration only.
  2. Declare non-goals in the body, where they arrive, and place them before the node that selects the work,

because a non-goal read after selection excludes nothing that has not already been paid for.

  1. Honor an ABSENT slot explicitly, or do not name it. A gate written over a slot that may be ABSENT has no

satisfiable state and can only be met by fabricating its evidence. Deriving the check list from the binding is correct, while adding _or declared ABSENT_ makes the check saturate.

  1. A check over a slot resolving ABSENT is not emitted, rather than emitted with an escape clause.
  2. Never hardcode a runtime path, tool name or key in a contract that declares itself portable. Name a slot

or a semantic operation, and let the runtime's mapping in BOOTSTRAP.md resolve it.

  1. State the trust anchor and every deviation. Holding no position is a first-class output.

Skills

Content persists in context for the whole session once loaded, so every line is a recurring cost paid once per reader. Standing instructions are written rather than one-time steps, because the file is not re-read.

A shipped skill carries name and description in frontmatter and nothing else. Keys that decide which party may invoke a skill, which tools it grants or whether it runs as its own agent are runtime keys, added at adoption where the runtime reads them.

When a declaration appears not to take effect

Delivery is checked before correctness: was the spec read by this runtime at all, and does this runtime read the key it is declared in? A definition read before an edit lands is stale for that invocation and passes every check on disk.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
411
Repository forks
34
7-day trend score
35

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/varietyz/disciplined-ai-software-development/agent-authoring/badge)](https://verified-skill.com/skills/varietyz/disciplined-ai-software-development/agent-authoring)

Something wrong with this skill or its page? Tell us.