Jagdeep Singh

Available

Projects

Skills

Around thirty-five reusable agent skills for Claude Code — instruction sets that load on demand when a request matches, rather than sitting in context all day.

github.com/jagdeepbanga/skillsInstalled, not deployed: npx skills@latest add jagdeepbanga/skills

The problem

The instructions that make a coding agent behave well — how this team reviews code, how a Laravel project is laid out, how to resolve a rebase — usually live in one enormous always-loaded file per project, or in the head of whoever wrote them. Both fail the same way: the file grows until attention thins across it, and none of it travels to the next project. These skills are the same instructions packaged so that they are loaded only when they are relevant, and installed once across every repo.

How it works

Each skill is a directory whose SKILL.md carries YAML frontmatter with a name and a description. The description is the whole activation mechanism — it is the only part held in context, and its wording decides when the agent reaches the rest. The body below it holds the steps, and anything a given run may not need is pushed into a sibling file behind a pointer, so the top of the document stays legible. Installation is a symlink into the agent’s skills directory, which means updating the repo updates every project at once. One skill is a router over the others, for when you know you have a problem but not which skill it is.

Skill repo~35 directories, prose not code
Installsymlinks into the agent’s skills directory
Claude Codeloads a skill when its description matches
SKILL.mdfrontmatter to trigger on, steps to follow
Disclosed referencesiblings and scripts, reached by pointer

Stack

  • Markdown
  • YAML frontmatter
  • Claude Code
  • Bash

Decisions and trade-offs

The description is the interface, not the title

A skill’s frontmatter description is the only text in context every turn, and its wording — not its target — decides whether the agent ever reaches the material. So it names the distinct cases that should trigger it, one trigger per case, with the leading word front-loaded. Treating it as a label rather than an interface is how good material ends up never firing, which reads as the agent ignoring instructions.

Two budgets, spent deliberately

Always-loaded material spends context load — tokens and attention on every turn, whether or not it fires. Material with no pointer at all spends cognitive load: the human has to remember it exists. The second is not a cost to drive to zero, because it is the price of human agency; it gets spent where judgement matters and removed where it does not. Naming the two is what makes the inline-or-disclose call decidable instead of a matter of taste.

Progressive disclosure protects the hierarchy, not the token count

Reference gets pushed out of the main file and behind a pointer so the steps stay at the top and legible. The test is branching: inline what every run needs, disclose what only some runs reach. Reading it as a token optimisation gets it backwards — push too much down and you hide material the agent actually needs, which is the more expensive failure.

Skills are the unit, not one project’s instruction file

The alternative is a large AGENTS.md per repository, which is simpler and needs no install step. It was rejected because it cannot be shared across projects and it has no off switch: every line is loaded for every task. Directories with their own triggers are more machinery, and they buy portability and conditional loading.

Next project: Tebani CraftAll projects