Skip to content
Development
Skill

/annotate

Records unexpected API behaviors, undocumented caveats, version bugs, or non-obvious workarounds into .claude/memory/annotations.md. Use immediately when an undocumented behavior or surprising caveat is discovered during development.

From plugin
software-development-department
74116 skills28 agents1 MCP

Claude Code

$ npx -y skills add tranhieutt/software_development_department --skill annotate --agent claude-code

SKILL.md

annotate.SKILL.md
name: annotate
type: workflow
description: "Records unexpected API behaviors, undocumented caveats, version bugs, or non-obvious workarounds into .claude/memory/annotations.md. Use immediately when an undocumented behavior or surprising caveat is discovered during development."
argument-hint: "<service-or-library> <what-you-discovered>"
user-invocable: true
allowed-tools: Read, Edit, Bash
effort: 1
when_to_use: "When you encounter: unexpected API behavior, undocumented caveats, version incompatibilities, rate limit quirks, authentication edge cases, or any non-obvious workaround that took time to discover"

/annotate — Persist a Learned Lesson

You are adding a persistent annotation to the project's learned knowledge base. Annotations survive across sessions and auto-load when working with relevant services.

**Arguments:** `$ARGUMENTS` — format: `<service> <description of gotcha/caveat>`

---

Phase 1 — Parse the Annotation

Extract from `$ARGUMENTS`:

  • **Service/Library**: The specific service, library, or area (e.g., `stripe`, `next.js`, `postgresql`)
  • **Annotation text**: The gotcha, caveat, or learned lesson

If `$ARGUMENTS` is empty or unclear, ask: > "What service/library does this apply to, and what did you discover?"

---

Phase 2 — Format the Entry

Format the annotation as:

- [YYYY-MM-DD] <clear, specific description of the issue> — <workaround if applicable>

**Good example:**

- [2026-04-07] Stripe webhook signature verification requires raw body buffer, not parsed JSON. 
  Pass rawBody to stripe.webhooks.constructEvent() instead of req.body

**Bad example:**

- Stripe webhooks broken  ← too vague, no date, no solution

Apply this quality check before writing:

  • ✅ Specific enough to be actionable without additional research?
  • ✅ Includes the date?
  • ✅ Includes workaround if one exists?
  • ✅ Would a new developer understand this without context?

---

Phase 3 — Find or Create the Section

Read `.claude/memory/annotations.md`.

1. Find the existing section that matches the service (case-insensitive) 2. If no matching section exists, create one:

## <Service Name>

- [YYYY-MM-DD] <your annotation>

3. If the section exists and has `*(no annotations yet)*`, replace that line with the entry. 4. If the section exists with entries, append the new entry below the last one.

---

Phase 4 — Write and Confirm

Edit `.claude/memory/annotations.md` with the new entry.

Then confirm:

✅ Annotation saved to .claude/memory/annotations.md

Service: <service>
Entry: [YYYY-MM-DD] <annotation text>

This will auto-load in future sessions when working with <service>.

---

Annotation Quality Rules

  • **Never** write vague entries like "be careful with X" — always explain WHY
  • **Always** include the date (use current date: 2026-04-07)
  • **Always** include the workaround if you found one
  • **Prefer** short entries (1-2 lines) — link to docs if more context needed
  • **Mark** if issue is version-specific: `(affects v2.x, fixed in v3.0)`
  • **Group** related gotchas under the same service header

---

When Agents Should Use This Automatically

You do NOT need to wait for `/annotate` to be called explicitly. **Proactively** add annotations when you:

1. Spend more than 10 minutes debugging an unexpected API or library behavior 2. Find that official docs are wrong, incomplete, or misleading 3. Discover a version incompatibility not mentioned in release notes 4. Work around a bug with a non-obvious solution 5. Find that a library's "default" behavior causes problems in this project's setup

> **Pattern from Context Hub:** The value compounds over time. > Each annotation means the NEXT session starts smarter — not from zero.

Read more
@tranhieutt
Ships withsoftware-development-department

Software Development Department

74116 skills28 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
74
Star history of tranhieutt/software_development_department on GitHub, a chart by star-history.com

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills13d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react4d252k
@facebook@facebookInstall Skill

Questions about annotate.

Which coding agents can use annotate?
annotate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.