Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Spec Writing

ASecurity

Turns gathered requirements into a written specification that an implementer can build from without asking follow-up questions. Use when requirements are known but not written down, before starting a feature that spans several tasks, or when a spec needs reviewing for gaps and contradictions. Produces a committed document, not a chat message.

9 stars
0 votes
0 copies
0 views
Added 9/27/2026
ai-agentsrustgotestingsecurity

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

$npx -y skills add khuynh22/agent-dev-team --skill spec-writing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spec Writing?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Spec Writing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khuynh22-spec-writing/badge)](https://www.skillsdirectory.com/skills/khuynh22-spec-writing)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: spec-writing
description: Turns gathered requirements into a written specification that an implementer can build from without asking follow-up questions. Use when requirements are known but not written down, before starting a feature that spans several tasks, or when a spec needs reviewing for gaps and contradictions. Produces a committed document, not a chat message.
license: MIT
metadata:
  phase: define
  owners: [product-manager, tech-lead]
  version: "0.1.0"
---

# Spec Writing

A spec exists so that implementation does not require the author to be available. The test
of a spec is not whether it is complete; it is whether someone else can build from it and
arrive at the same thing.

If requirements are not yet gathered, use `requirements-interview` first.

## Scope check before you write

If the request contains several independent subsystems, do not write one spec. Decompose
it, state the pieces and their dependency order, and spec the first piece. A spec spanning
four subsystems produces a plan nobody can execute and a review nobody can do.

Test: can one implementer, working alone, take this from start to verifiable in a
bounded amount of work? If not, split.

## Structure

```markdown
# <Feature>

## Problem
<why this exists; the cost of not doing it>

## Goals
## Non-goals
<the adjacent things explicitly out of scope, and why>

## Requirements
<numbered, each observable from outside the system>

## Design
<the shape of the solution: components, responsibilities, boundaries, data flow>

## Interfaces
<each contract this creates or changes, with its shape and its compatibility story>

## Data
<what is stored, in what shape, what migrates, what is retained and for how long>

## Error handling
<what fails, what the caller sees, what is retried, what is logged>

## Security
<trust boundaries, authorization, what is untrusted>

## Testing
<what gets tested, at what level, what the acceptance test is>

## Rollout
<flags, sequencing, rollback, and how you will know it is working>

## Acceptance criteria
<Given / when / then, each verifiable by someone who has not read the code>

## Open questions
| Question | Who answers | Blocking? |
```

Scale each section to its risk. A section that says "nothing special" is a real answer and
better than three paragraphs of filler; delete the section instead if truly nothing
applies, and say so in one line.

## Writing rules

- **Observable, not internal.** A requirement that can only be checked with a debugger is
  not a requirement.
- **Decide, do not survey.** A spec that lists three options has deferred the work to the
  implementer, who has less context.
- **Name the boundaries.** Each component: what it does, how it is used, what it depends
  on. If you cannot say what a component does in one sentence, it does too much.
- **Write the error paths.** Most specs describe only success, and most implementation
  time goes to the rest.
- **Prefer smaller units.** A design where each piece can be understood and tested alone
  survives contact with implementation; a design that must be held whole does not.

## Self-review before handing it over

Read it fresh and fix inline:

1. **Placeholders.** Any TBD, TODO, or vague requirement. Resolve or mark it blocking.
2. **Contradictions.** Does the design section match the requirements section? Does the
   data model support every stated requirement?
3. **Ambiguity.** Could any requirement be read two ways? Pick one and say it explicitly.
4. **Scope.** Still one implementable unit?
5. **Verifiability.** Could an implementer tell, from this document alone, when they are
   done?

## Verification

- Every requirement has an acceptance criterion.
- Every interface states its compatibility story.
- Error handling is present and specific.
- No TBD remains, or each remaining one is listed as blocking with an owner.
- Committed to the repository, not left in a chat message.

## Red flags

| Thought | Reality |
|---------|---------|
| "The implementer can figure out the details" | The implementer has less context than you. Decide now. |
| "I'll list the options and let them choose" | That is deferring the decision downhill. |
| "This spec covers the whole platform" | Then it covers nothing implementable. Decompose. |
| "Error handling is standard" | Write what the caller sees. Standard means different things in different modules. |
| "It is written, we are done" | Read it again cold. Half the contradictions are only visible on the second pass. |

Attribution

khuynh22khuynh22
View sourceMore from khuynh22 →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

694821 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →