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.
npx agentmods add skills/poorgramer-zack/copilot-cli-things/plugin-structurenpx skills add Poorgramer-Zack/copilot-cli-things --skill plugin-structuregit clone --depth 1 https://github.com/Poorgramer-Zack/copilot-cli-thingsWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00050 | $0.02388 |
| Opus 5 | $0.00025 | $0.01194 |
| Sonnet 5 | $0.00010 | $0.00478 |
| Haiku 4.5 | $0.00005 | $0.00239 |
Grade A, and why
plugin-structure 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 yesterday.
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.
How it starts
The opening of the file, as written. The whole thing — 369 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Plugin Structure for Copilot CLI
Copilot CLI plugins follow a directory-based convention with automatic component discovery. No manifest file is required — understanding this structure enables creating well-organized, maintainable plugins.
Key concepts:
- Convention-based directory layout for automatic discovery
- Component-based organization (skills, agents, hooks, extensions)
- Relative path references
- Auto-discovered component loading
Directory Structure
Every Copilot CLI plugin follows this organizational pattern:
plugin-name/
├── skills/ # Skills (files or subdirectories with SKILL.md)
│ └── skill-name/
│ └── SKILL.md # Required for rich skills
├── agents/ # Agent definitions (.agent.md files)
├── hooks/
│ └── hooks.json # Event handler configuration
├── extensions/ # Extensions
└── README.md
Critical rules:
- No manifest file: Copilot CLI plugins use directory conventions, not a
plugin.jsonmanifest - Component locations: All component directories (skills, agents, hooks) MUST be at plugin root level
- Optional components: Only create directories for components the plugin actually uses
- Naming convention: Use kebab-case for all directory and file names
Component Organization
Skills
Location: skills/ directory
Format: .md files (simple) or subdirectories with SKILL.md (rich skills)
Auto-discovery: All skill files and SKILL.md files load automatically
Example structure:
skills/
├── quick-lint.md # Simple skill (single file)
├── api-testing/ # Rich skill (directory)
│ ├── SKILL.md
│ ├── scripts/
│ │ └── test-runner.py
│ └── references/
│ └── api-spec.md
└── database-migrations/
├── SKILL.md
└── examples/
└── migration-template.sql
SKILL.md format:
---
description: When to use this skill
version: 1.0.0
---
Skill instructions and guidance...
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- yesterday First seen · 369 lines · 50 tokens per session scan A 72444a2c42b3
plugin-structure is a skill published in the GitHub repository Poorgramer-Zack/copilot-cli-things (2 stars, last pushed 5mo ago), licensed MIT. It adds 50 tokens to every session and 2,388 once invoked, about $0.0003 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-31.
Other skills, from other repositories
speckit-init
Scaffold a Spec Kit (spec-driven development) project for GitHub Copilot by running specify init --integration copilot --integration-options="--skills". USE FOR: starting a new spec-kit project, bootstrapping spec-driven development in an existing repo, installing spec-kit templates/scripts/commands for Copilot. DO…
speckit-bundle
Discover, install, and author Spec Kit bundles via specify bundle. USE FOR: searching/showing/listing bundles, installing/updating/removing a bundle (a curated set of extensions/presets/integrations/workflows), validating a bundle manifest, building a distributable bundle artifact, initializing a project and…
speckit-extension
Manage Spec Kit extensions via specify extension. USE FOR: installing/removing/updating spec-kit extensions, searching the extension catalog, showing extension info, enabling/disabling extensions, setting extension resolution priority, managing extension catalogs. DO NOT USE FOR: presets (use speckit-preset), bundles…
speckit-preset
Manage Spec Kit presets via specify preset. USE FOR: installing/removing presets, searching the preset catalog, showing preset info, resolving which template a preset name maps to, enabling/disabling presets, setting preset resolution priority, managing preset catalogs. DO NOT USE FOR: extensions (use…
speckit-workflow
Manage and run Spec Kit automation workflows via specify workflow. USE FOR: running a workflow by ID or local YAML, resuming a paused/failed run, checking run status, listing/installing/removing workflows, searching the workflow catalog, showing a workflow step graph. DO NOT USE FOR: extensions (use…
speckit-self
Check for and apply Spec Kit CLI updates via specify self. USE FOR: checking whether a newer specify-cli release is available, previewing an upgrade with --dry-run, upgrading the CLI in place (optionally to a pinned tag). DO NOT USE FOR: checking project tools/integrations (use speckit-check) or managing…