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.

ModproductivityMIT7 source files

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.