Aitmpl
/aitmpl opens a side pane for the aitmpl.com catalog: search box, the site's Browse menu with an icon, colour and count per type, an Installed section (agents, commands, skills and mods found in .claude/ and ~/.claude/), a Popular/Results list with download counts, and view/install on every row. Install runs the fixed CLI argv ($.process.run, validated path, no shell). The catalog is read live through $.http.fetch; browsing costs no tokens.
Before you use this component
This is a third-party source bundle, not an installation into your account. UI Discovery has checked the available redistribution license evidence; runtime behavior has not been tested. Review all files, use a disposable project first, and do not enable scripts or hooks until you understand their permissions.
Some integrations require separately installed software, API keys or paid services. Credentials and subscriptions are not included. These are Claude Code resources; other clients may require adaptation.
Extract the ZIP into a temporary folder, inspect its entry file and supporting resources, then follow the original instructions. Do not overwrite an existing project configuration blindly. Keep the bundled license and attribution notices.
- Source publisher
- Claude Code Templates
- Creator supplied by source
- claude-code-templates
- Pinned source version
- a344359459263d73d8948651c789244093c02e4e
- License evidence
- LICENSE
Source preview
cli-tool/components/mods/productivity/aitmpl/README.md
# aitmpl
`/aitmpl` opens a side pane laid out like VS Code's Extensions view for the
catalog of [aitmpl.com](https://www.aitmpl.com): a search box, a Browse
menu like the site's sidebar (one line per type, with its count), an **Installed** section, a **Popular** list (or
**Results** while you search), the download count on every row and a button
that opens the component's page. In the fullscreen layout (`/tui fullscreen`)
Claude Code docks it beside the transcript; otherwise it sits above the
prompt. Claude Desktop and VS Code draw it in their own pane.
```
aitmpl.com refresh close
2.2k components · 1.6M downloads
[ Search components on aitmpl.com ] [search]
BROWSE
▌✦ All [ 1919 ]
◆ Skills [ 889 ]
◉ Agents [ 422 ]
❯ Commands [ 288 ]
⚙ Settings [ 72 ]
↪ Hooks [ 62 ]
⬡ MCPs [ 104 ]
▣ Mods [ 39 ]
↻ Loops [ 18 ]
────────────────────────────────────────────────
▾ INSTALLED [ 3 ]
◉ frontend-developer agent
Frontend specialist for React apps…
↓ 3.9k · development-team view ↗ ✓
```
Each type has its own icon and ANSI colour (skills magenta, agents blue,
commands green, settings yellow, hooks red, MCPs cyan, mods bright magenta,
loops bright yellow), used by the menu, the rows and the detail; counts are
pills, downloads are yellow, `install` is the primary button and a ✓ marks
what is on disk. Colours are ANSI names, so the terminal's theme chooses the
shade. Sections collapse when you press their heading.
- **Search** filters as you type (every word must appear in the name,
category or description); it spans every type, or only the type chosen in Browse.
- **Browse** is the site's menu: one line per type (Skills, Agents, Commands,
Settings, Hooks, MCPs, Mods, Loops) plus All, each with its count from
`counts.json`; the chosen type narrows both sections.
- **Installed** lists what is already on disk, with the project's `.claude/`
winning over `~/.claude/`: agents (`agents/*.md`), commands
(`commands/**.md`), skills and mods (`skills/{name}/`; a directory with
`.claude-plugin/plugin.json` is a mod). Hooks, settings, MCPs and loops are
merged into JSON files, so they cannot be told apart by name and are not
listed. A name found on disk that the catalog does not know is shown as
local. The list is rescanned when the pane opens, after an install and at
the end of every turn.
- **Rows** show the type, the description, the category, downloads and two
actions: `view` opens the component's page on aitmpl.com in your browser
(`open` on macOS, `xdg-open` on Linux, `explorer.exe` on Windows, each an
argv; the URL is http(s) only) and `install` (`installed` once it is on disk). A row's
name opens its detail: description, the install command, **install here**
(`$.process.run(["npx", "claude-code-templates@latest", "--agent", "…", "--yes"])`:
always the fixed CLI, the type's own flag and a validated path, never a
command string from the catalog, never a shell), **open on aitmpl.com** and
**put command in prompt** (`$.prompt.fill`, nothing is submitted).
- **Downloads** come from the `downloads` field of the site's
`components/{type}.json`: the total per component the catalog generator
publishes (the header totals come from `trending-data.json`). The catalog is
fetched live through `$.http.fetch` and cached for the session; `refresh`
reloads it.
Browsing costs no tokens: nothing the pane draws enters the transcript.
## Command
```
/aitmpl open the pane
/aitmpl skills open it filtered to a type (agents, commands, mcps, settings, hooks, skills, loops, mods)
/aitmpl react perf open it with a search
/aitmpl stop close
```
The search box takes the keyboard when the pane opens; Esc returns it, and
then Tab / Enter (or a click) press the buttons, and `r` refreshes, `b` goes
back from a detail, `i` / `o` / `c` install, open and copy the command.
Every cell that has to line up is a fixed-width box and every run of spaces in
a label is a no-break space off the terminal, because Claude Desktop sizes a
cell to its text and collapses spaces. The mobile surface has no `Input`
element yet and draws the engine's own pane instead.
## Hooks
| Event | What it does |
|---|---|
| `session.start` | registers `/aitmpl` (`$.command.register`) |
| `command.run` `{ command: "aitmpl" }` | scans what is installed, opens the pane (`$.ui.open`, focused, docked at `columns`); `stop` closes it |
| `ui.render` `{ component: "Pane", requestId: "aitmpl" }` | draws the pane from `$.ui.resolve(e)` (Box, Text, Button, Input); the fetches start from its closures and `$.ui.invalidate("ui.render")` repaints when they land; a fetch that failed is retried only by refresh, never by a repaint |
| `turn.complete` | rescans what is installed (Claude may have installed something) |
| `ui.close` | notes the pane is closed |
The mod calls `$.http.fetch` (the site's JSON), `$.fs.list` and `$.fs.exists`
(the installed scan, read-only), `$.process.run` (from the install button, with
the fixed CLI argv, and from the open-in-browser button, with the platform's
URL opener), `$.prompt.fill`, `$.env.get` (`HOME`, `USERPROFILE`, `OS`),
`$.ui.open`, `$.ui.close`, `$.ui.toast`, `$.ui.status` and `$.ui.log`. An
`admin-capability-lockdown` mod that withholds `http` or `process` refuses it
at `plugin.register`, by design.
## Options
```
siteUrl: string the site whose catalog is browsed (default "https://www.aitmpl.com")
pageSize: number rows shown per section before "show more" (default 8)
columns: number width asked for the docked pane, 28-120 (default 48)
```
Declared in `.claude-plugin/plugin.json` (`userConfig`). Set them in `/config`, in user settings (`~/.claude/settings.json`, not project settings), with `--settings <file>` or in managed settings:
```json
{ "pluginConfigs": { "aitmpl@skills-dir": { "options": { "pageSize": 12 } } } }
```
## Install
```sh
npx claude-code-templates@latest --mod productivity/aitmpl
claude
```
It is written to `.claude/skills/aitmpl/`, which Claude Code auto-loads as `aitmpl@skills-dir`. For one session with hot reload: `claude --plugin-dir .claude/skills/aitmpl`. `claude plugin validate .claude/skills/aitmpl` prints every event it hooks and every `$` call it makes; `claude plugin test .claude/skills/aitmpl` runs the tests (catalog helpers and the pane on the terminal and desktop surfaces). A project mod loads only once the workspace trust prompt is accepted; `~/.claude/skills/aitmpl/` always loads.
**Requirements.** Mods are on by default in Claude Code 2.1.287+. Typed against Anthropic's declarations: https://github.com/anthropics/claude-code/tree/main/mods
Preview capped at 60,000 characters. Download the bundle for every original file and notice.
Read the redistribution license
MIT License Copyright (c) 2025 Daniel (San) Ávila Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Bundle SHA-256: 5da534fa1eeaa0cda19499c2c61f997a2db1e69a44c52b1ccf4121b634306a38. Files are served as downloads and are never executed by this page.