Claude Code Plugin Structure
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
Rewrites the prompt typed after the command before any work starts, then works from the rewrite.
$ npx skills add joetawil7/first-pass --skill sharpen -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install joetawil7/first-pass sharpen --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sharpen .claude/skills/sharpen && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .claude/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/joetawil7/first-pass/tree/main/skills/sharpenType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add joetawil7/first-pass --skill sharpen -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install joetawil7/first-pass sharpen --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sharpen .agents/skills/sharpen && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .agents/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joetawil7/first-pass --skill sharpen -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install joetawil7/first-pass sharpen --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sharpen .cursor/skills/sharpen && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .cursor/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/joetawil7/first-pass.git --path skills/sharpen--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add joetawil7/first-pass --skill sharpen -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install joetawil7/first-pass sharpen --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sharpen .gemini/skills/sharpen && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .gemini/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install joetawil7/first-pass sharpenInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add joetawil7/first-pass --skill sharpen -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sharpen .github/skills/sharpen && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .github/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joetawil7/first-pass --skill sharpen -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install joetawil7/first-pass sharpen --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joetawil7/first-pass.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sharpen .opencode/skills/sharpen && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sharpen" agent skill from https://github.com/joetawil7/first-pass/tree/main/skills/sharpen into .opencode/skills/sharpen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sharpen", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sharpenRewrites the prompt typed after the command before any work starts, then works from the rewrite.
Sharpen is an agent skill from joetawil7/first-pass. Rewrites the prompt typed after the command before any work starts, then works from the rewrite. Splits a mixed-up message into a numbered list of asks, turns words like "be 100% sure", "cover all cases" or "don't break anything" into the checks they stand for, keeps every name, path, number and quote exactly, and stops to ask only where it would have to guess. Runs only when the user types it.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Hooks and plugins. The repository describes itself as: Rules and checks that make Claude Code look around a change, not just at the lines it writes: ten questions before code, a reviewer that didn't write it, proof before done, bugs… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f5bc413. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sharpen loads about 1.9k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,169 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
otated and set where the code reads it (`.env.local`, theAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from joetawil7/first-pass at commit f5bc413, republished under its MIT licence (© joetawil7). 1,169 words, ~1,946 tokens.
.claude/skills/sharpen/SKILL.md (or your agent's skills folder).The prompt to rewrite:
<prompt>
$ARGUMENTS
</prompt>
If the prompt block above is empty or still shows a placeholder, the prompt is the text the user sent with this command. If there is none, ask for it and stop.
The rewrite (step 5) is shown before any other skill, edit or command that changes
anything. The user typed this command to see how their prompt was read; work that starts
without showing it has skipped the skill. It is not a preamble or a restatement of the
question, so reply rules against those do not apply to it. It goes in the reply text, never
only in thinking, which the user cannot see. Other skills the work calls for (premortem,
fix-the-class, ship-check) are loaded only after it.
When this runs as /first-pass:sharpen (the Claude Code plugin), the rewrite is a
message of its own: write it, then end the message with no tool call. The plugin's hooks
hold back edits, shell commands, subagents, MCP tools, publishing, scheduling and other
skills until reply text
starting with the word Sharpened has been shown, then tell you to go on with the work.
Read, Grep and Glob are never held back. Anywhere else (Cursor,
or the skill installed without the plugin), go straight on to the work in the same reply.
A prompt written in a hurry mixes three asks in one sentence, says "be 100% sure" where it means "show me the proof", and leaves the agent to guess which part is a question. This skill rewrites it into what the user meant, shows the rewrite, then does the work from it. The user's intent is the source: the rewrite may reorder, split and name things, never add or change what is asked.
A word that asks for certainty or completeness without naming a check becomes the check it
stands for. Use the user's own habit words block (first-pass:words) when it is loaded;
otherwise this list:
| They wrote | It becomes |
|---|---|
| "be 100% sure", "confident", "don't assume" | Evidence: each claim cites a command and its output or a file:line read now; the rest is listed as "Not verified" |
| "cover all cases", "bug free", "doesn't break anything" | The pre-mortem, with every other reader and writer of the data touched, and the test that proves each case |
| "full", "deep", "comprehensive", "everything" | Say the coverage: what is read whole, what sampled, what not covered |
| "carefully", "correctly", "properly", "perfect", "take your time" | Done means proven: a test that fails first, the breaker's review, CI's checks in a clean checkout |
| "all fine, right?", "is it done?", "anything left?", "that's best?" | What is not done or not verified comes first; for "best?", the strongest case against before the pick |
| "are you sure?", "this doesn't make sense" | Re-check the claim at its source; say which part holds, which does not, and why |
| "fix it once and for all" | Reproduce it first, then fix the class (fix-the-class) |
| "make it secure", "no hacking possible" | The hostile-user question as concrete attacks, each with a test |
| "do whatever you want", "take control" | The task named only; money, production deletes and anything outward-facing still need a yes |
<secret left out> in the rewrite, and one line tells the user it is now in this chat's
history and should be rotated and set where the code reads it (.env.local, the
service's settings). The work uses the variable name.List each place you had to choose a reading, and the reading you took. Then:
Reading files (Read, Grep, Glob) to settle a guess may come first; nothing else does. It is always shown:
**Sharpened**
Goal: <one line>
1. <ask> (<question | change | check | your call>)
Done when: <the proof it needs, for a change or a check>
2. <ask> ...
Context: <what the user gave, facts exact>
Limits: <repo, account, what not to touch, what needs a yes>
Checks: <each check the habit words asked for, once>
Guesses: <each reading taken>
Not asked: <one line, only if there is one>Leave out any line with nothing in it. Under the block, one line on what changed from the original ("split into 3 asks; 'be 100% sure' and 'don't assume' became Evidence; a pasted key left out"), so the user can see nothing was lost.
A prompt that is already clear gets the line Sharpened: already clear, working from it as written. instead of the block, still first. A one-ask prompt gets a short block, not every heading.
Once the rewrite is shown, and unless step 4 stopped, the rewrite is the task. Work the asks in order, dependencies first. The report answers each ask by its number, and shows each check from the Checks line with its evidence (the pre-mortem's answers, the test that failed first, the breaker's findings), or marks it "not done, because". Where the rewrite and the original prompt disagree, the original wins: say so and follow it.
© joetawil7, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/sharpen of joetawil7/first-pass.
Open the folder on GitHubat commit f5bc413
Sharpen next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sharpen this skilljoetawil7/first-pass | 95 | — | ~1.9k | Automated safety check: Notes | MIT | |
| Claude Code Plugin Structureanthropics/claude-plugins-official | 38k | 10 repos | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence | |
| Plate Plugin Creatorudecode/plate | 17k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| AgentSys Cross-Platform Maintenanceagent-sh/agentsys | 994 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Readyprekuter/dryforge | 413 | 1 repos | ~6.8k | Automated safety check: Pass | Apache-2.0 |
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
udecode/plate
Build new Plate plugins with Slate-first architecture, sane typing, and explicit React/Plate wrapper boundaries.
agent-sh/agentsys
Maintainer guide to where AgentSys keeps its marketplace, installer, transforms and adapters, and what to run when preparing a release or fixing a platform bug.
prekuter/dryforge
Understand what you mean before anything is built. An agent skill from prekuter/dryforge.
tw93/Waza
Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.
joetawil7/first-pass
Bug-fix routine that fixes the whole class of bug, not just the reported instance.
joetawil7/first-pass
Learns the words a user habitually writes to their coding agent that make its answers worse ("be 100% sure", "don't assume", "full review", "are you sure?", "all fine, right?"), from what they…
joetawil7/first-pass
Sets up, checks or changes the optional Jev judge, the TypeSafe decision model that ship-check asks about review findings (is this real harm, is a small one worth fixing now, what proof does a small…
joetawil7/first-pass
Run before writing or changing code for any feature, bug fix or refactor that touches data, jobs, money, outside services or user-facing behaviour.
joetawil7/first-pass
Reviews a change before it is merged, from little or no input.
joetawil7/first-pass
The definition of done. An agent skill from joetawil7/first-pass.
Categories
Rewrites the prompt typed after the command before any work starts, then works from the rewrite. Sharpen is an agent skill from joetawil7/first-pass. Rewrites the prompt typed after the command before any work starts, then works from the rewrite.
Sharpen fits situations like: tasks that involve Hooks and plugins.
Run `npx skills add joetawil7/first-pass --skill sharpen -a claude-code`. Or copy the skill folder (skills/sharpen in joetawil7/first-pass) into .claude/skills/sharpen in your project. Claude Code loads it when a task matches its description.
Run `npx skills add joetawil7/first-pass --skill sharpen -a codex`. Or copy the skill folder (skills/sharpen in joetawil7/first-pass) into .agents/skills/sharpen in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add joetawil7/first-pass --skill sharpen -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sharpen, .gemini/skills/sharpen, .github/skills/sharpen and .opencode/skills/sharpen in your project.
SKILL.md names no scripts, command-line tools or credentials: Sharpen is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Sharpen is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sharpen: Claude Code Plugin Structure (anthropics/claude-plugins-official, 38k stars), Crush Configuration (charmbracelet/crush, 29k stars), Plate Plugin Creator (udecode/plate, 17k stars) and AgentSys Cross-Platform Maintenance (agent-sh/agentsys, 994 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
joetawil7 (a GitHub user) maintains it in joetawil7/first-pass, which has 95 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 9, 2026.
Source: joetawil7/first-pass on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.