annotate

annotate is a skill for Claude Code, Codex from tranhieutt/software_development_department. It costs 47 tokens per session (879 once invoked), scanned A, original, MIT.

A tool for recording surprising API behavior, undocumented limitations, version-specific bugs, and practical workarounds in a project memory file.

In plain words
What is it for?
Use it after finding a non-obvious issue with a service, library, or integration, so the problem and its workaround are recorded with a date.
Why use it?
It prevents developers from rediscovering the same technical caveats in later sessions or by other team members.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/tranhieutt/software_development_department/annotate
Any agent
npx skills add tranhieutt/software_development_department --skill annotate
Clone the repo
git clone --depth 1 https://github.com/tranhieutt/software_development_department

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for annotate

README.md
[![agentmods](https://agentmods.dev/badge/skills/tranhieutt/software_development_department/annotate.svg)](https://agentmods.dev/skills/tranhieutt/software_development_department/annotate)
Your own site
<a href="https://agentmods.dev/skills/tranhieutt/software_development_department/annotate"><img src="https://agentmods.dev/badge/skills/tranhieutt/software_development_department/annotate.svg" alt="Measured on agentmods" height="20"></a>
Per session 47 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 879 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00047 $0.00879
Opus 5 $0.00023 $0.00439
Sonnet 5 $0.00009 $0.00176
Haiku 4.5 $0.00005 $0.00088

Measured 4d ago against content hash c560acacb62e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

annotate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/annotate/SKILL.md · 118 lines

How it starts

The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/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>
  1. If the section exists and has *(no annotations yet)*, replace that line with the entry.
  2. 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>.

Read the full file on GitHub · 118 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 118 lines · 47 tokens per session scan A c560acacb62e

Subscribe to this mod's changes

annotate is a skill published in the GitHub repository tranhieutt/software_development_department (71 stars, last pushed 3mo ago), licensed MIT. It adds 47 tokens to every session and 879 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

harness-creator

Build, audit, and improve harnesses that make AI coding agents reliable: AGENTS.md/CLAUDE.md instruction files, feature/state tracking, verification gates, scope boundaries, session handoff, memory persistence, context budgets, tool-permission safety, and multi-agent coordination. Use this whenever a coding agent is…

walkinglabs/learn-harness-engineering · 142 tokens

datachain-knowledge

Use whenever datasets, cloud storage buckets, or data pipelines are mentioned — creating, saving, querying, listing, exploring, deleting, or processing data in S3, GCS, Azure Blob, or local storage. Also use when running any script that may create datasets as a side effect. Maintains a knowledge base at dc-knowledge/…

datachain-ai/datachain · 104 tokens

comet-memory

使用于 Comet 需要根据有界语义评审包判断是否值得保存个人记忆、候选、更新、遗忘或跳过时。.

rpamis/comet · 38 tokens

memory

Persist important outcomes from this step to long-term storage with automatic forgetting curve.

XiaoLuoLYG/GOD · 17 tokens

openloomi-memory

OpenLoomi Memory is the long-lived context layer of OpenLoomi — a tiered, locally-stored knowledge graph that grows on its own from your Connectors, chats, and Screen Capture. Memory is what makes Chat grounded and what Loop reads before it produces a Decision. It is always on your machine (local-first), always…

melandlabs/openloomi · 74 tokens

openloomi-api

OpenLoomi ships a local-first HTTP API served from the desktop app (port 3414, fallback 3515). All auth, Memory, AI, RAG, Loop, and Audit data live in a local SQLite database — your data stays on your machine and the OpenLoomi app is the source of truth. The only externally-routed auth path is the Composio OAuth…

melandlabs/openloomi · 106 tokens