> ## Documentation Index
> Fetch the complete documentation index at: https://docs.profy.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# Skill Catalog

> Complete built-in skill list, the three ownership tracks, and where skills are stored

# Skill Catalog

A skill is the **method layer**: a document telling the expert how this kind of work is done, usually bundled with executable scripts and templates. Tools decide what an expert **can** do; skills decide how **well** it does it.

This page enumerates the built-in skills and explains the three ownership tracks.

## Three ownership tracks (the key concept)

The skills available in one conversation are the **union of three sources**, never overriding each other:

| Track         | Qualified prefix | Storage                                                              | Visible in                                    |
| ------------- | ---------------- | -------------------------------------------------------------------- | --------------------------------------------- |
| Built-in      | `builtin/*`      | In the image, `services/agent-runtime/src/plugins/builtin/*/skills/` | Every conversation                            |
| User global   | `user/*`         | `user_skills` table, keyed by user ID                                | That user's conversations with **any** expert |
| Expert-scoped | `expert/*`       | `expert_skills` table, keyed by expert identifier                    | That expert's conversations only              |

<Info>
  Same names do not collide: `builtin/docx`, `user/docx`, and `expert/docx` can coexist. What the expert sees in `skill discover` is the **qualified name**, and activation must use it in full — a bare name that matches multiple tracks is refused rather than guessed.
</Info>

Write entry points are strictly partitioned by ownership:

| Entry point                                      | Writes to                                              |
| ------------------------------------------------ | ------------------------------------------------------ |
| Installing from the skill store / My Skills      | `user_skills` (global library)                         |
| Installing in expert configuration               | `expert_skills`                                        |
| Expert calling `skill_install` in a conversation | `expert_skills`, **and it requires an expert context** |
| Marketplace expert publish                       | `expert_skills`, inside the transaction                |

Conversations without an expert context — free chat, IM channels — refuse `skill_install` and point you at the UI to install into the global library. This is deliberate: a skill with no owning object has nowhere to be filed.

Built-in skills **never enter the database**. Changing them means changing the image and shipping a release.

## How a skill gets used

<Steps>
  <Step title="discover">
    The expert calls `skill(action="discover")` and receives the list — names plus descriptions only, **no bodies loaded**.
  </Step>

  <Step title="activate">
    Having judged one relevant, it calls `skill(action="activate", name="builtin/pptx")` to read the full body into context.
  </Step>

  <Step title="execute">
    For scripts and templates it calls `skill(action="execute", resource_type="script", resource_name="...")`. Scripts run **black-box**: only stdout/stderr returns, never the source.
  </Step>
</Steps>

The two-stage design (catalog first, body second) is mandatory: in the table below `builtin/pptx` is 34,079 characters and `builtin/kami` is 31,269. Injecting everything would consume most of a context window outright.

## Built-in skills

Grouped by plugin. Character counts are skill-document lengths, useful for judging the context cost of activating one.

### Document processing

| Qualified name      | Characters | Purpose                                                                 |
| ------------------- | ---------- | ----------------------------------------------------------------------- |
| `builtin/docx`      | 21,208     | Creating, reading, editing Word documents                               |
| `builtin/xlsx`      | 11,455     | Any task where a spreadsheet is the primary input or output             |
| `builtin/pdf`       | 8,424      | PDF reading, extraction, forms, merge/split                             |
| `builtin/kami`      | 31,269     | Professional typesetting: resumes, one-pagers, white papers, portfolios |
| `builtin/pptx`      | 34,079     | Presentation hub, routing to native pptx or HTML deck                   |
| `builtin/html-deck` | 22,221     | Horizontal-swipe web PPT as a single HTML file, two style templates     |

`pptx` and `kami` are the two longest documents on the platform because they carry complete production specs (templates, script invocations, export locks).

### Visualization (22 skills)

| Qualified name                        | Characters | Purpose                                                              |
| ------------------------------------- | ---------- | -------------------------------------------------------------------- |
| `builtin/visualize`                   | 1,911      | Master skill: inline HTML/CSS/JS visualizations in chat              |
| `builtin/visualization-strategy`      | 2,523      | Choosing a chart type from data and intent                           |
| `builtin/data-visualization`          | 1,847      | Routes to the right data-viz sub-skill                               |
| `builtin/d3-data-visualization`       | 2,744      | D3.js bar, line, scatter, custom                                     |
| `builtin/statistical-visualization`   | 2,840      | Histograms, box plots, violin plots, regression                      |
| `builtin/grammar-of-graphics`         | 2,755      | Vega-Lite / Observable Plot, declarative                             |
| `builtin/canvas2d-data-visualization` | 2,308      | 10K+ point datasets where SVG chokes                                 |
| `builtin/dashboards-realtime`         | 3,122      | Live dashboards, KPI cards, sparklines                               |
| `builtin/gantt-chart`                 | 3,429      | Timelines and Gantt charts                                           |
| `builtin/node-link-diagram`           | 3,342      | Network graphs, dependency trees, force-directed, chord              |
| `builtin/uml-architecture`            | 3,099      | UML, architecture, sequence diagrams                                 |
| `builtin/geospatial-visualization`    | 2,521      | D3-geo, choropleth, TopoJSON                                         |
| `builtin/scrollytelling`              | 3,005      | Scroll-driven narrative visualizations                               |
| `builtin/molecular-visualization`     | 3,850      | Proteins, nucleic acids, ligands, PDB/mmCIF                          |
| `builtin/interactive-3d-atlas`        | 6,902      | Clickable-hotspot 3D atlases (anatomical, mechanical, architectural) |
| `builtin/threejs-showcase`            | 15,577     | Five battle-tested Three.js patterns                                 |
| `builtin/threejs-data-visualization`  | 3,266      | 3D bars, globes, 3D networks, terrain                                |
| `builtin/3d-data-visualization`       | 7,485      | Mapping data into 3D space                                           |
| `builtin/react-nextjs-visualization`  | 2,728      | Embedding in React/Next.js components                                |
| `builtin/a2ui-patterns`               | 5,910      | A2UI layout patterns (comparisons, dashboards, wizards)              |
| `builtin/accessibility-visualization` | 2,134      | ARIA, keyboard navigation, colorblind-safe palettes                  |
| `builtin/reports-pdf-slides`          | 3,749      | Export to PDF, slides, print-ready formats                           |

<Note>
  The `profy-visualize` manifest declares only 8 skills while the directory holds 22. That is not an error: **the 8 declared ones are injected into the catalog when the plugin activates, and the other 14 are discovered on demand** via `discover` then `activate`. It prevents one plugin tick from dumping 22 entries into context.
</Note>

### Game development (10 skills)

| Qualified name                   | Characters | Purpose                                                         |
| -------------------------------- | ---------- | --------------------------------------------------------------- |
| `builtin/game-studio`            | 888        | Routes to a sub-skill by project type                           |
| `builtin/web-game-foundations`   | 1,123      | Architecture patterns shared by all web games                   |
| `builtin/three-webgl-game`       | 2,357      | Vanilla Three.js + WebGL 3D games                               |
| `builtin/react-three-fiber-game` | 1,654      | R3F + Drei 3D games                                             |
| `builtin/phaser-2d-game`         | 2,380      | 2D games with Phaser 3                                          |
| `builtin/physics-game`           | 8,544      | Rapier WASM physics games (pinball, marble run, tower stacking) |
| `builtin/game-ui-frontend`       | 1,200      | HUD, menus, dialogs over the game canvas                        |
| `builtin/sprite-pipeline`        | 1,023      | Creating and animating 2D sprite assets                         |
| `builtin/web-3d-asset-pipeline`  | 1,251      | Optimizing 3D assets for browser games                          |
| `builtin/game-playtest`          | 2,060      | Automated playtesting via screenshots and state assertion       |

### Video and creative

| Qualified name                      | Characters | Purpose                                                       |
| ----------------------------------- | ---------- | ------------------------------------------------------------- |
| `builtin/movie` (`skills/SKILL.md`) | 4,611      | Video production pipeline overview                            |
| `builtin/video-production`          | 2,020      | Seven-section production methodology template                 |
| `builtin/product-ad`                | 1,727      | Product ads (15–60s, high energy, CTA-focused)                |
| `builtin/animated-short`            | 1,843      | Animated shorts (1–3 min, narrative-driven)                   |
| `builtin/world-generation`          | 2,188      | Navigable 3D worlds with HY-World 2.0                         |
| `builtin/canvas`                    | 2,801      | Canvas workflow: create nodes, wire the DAG, auto-layout, run |

### Desktop and professional software bridges

| Qualified name               | Characters | Purpose                                          |
| ---------------------------- | ---------- | ------------------------------------------------ |
| `builtin/blender-workflow`   | 1,652      | Blender modeling best practices                  |
| `builtin/godot-workflow`     | 2,015      | Godot development with deterministic playtesting |
| `builtin/photoshop-workflow` | 1,284      | Non-destructive Photoshop editing discipline     |
| `builtin/chrome-extension`   | 3,514      | Driving the user's authenticated Chrome          |

The three software-bridge skills are all short (1,284–2,015 characters) because they carry workflow discipline only; the concrete operations depend on MCP tools — and **that part is currently unwired**. See the known-defect section on each plugin page.

### Record & Replay (9 skills, flat files)

`profy-record-and-replay` stores its skills as flat `.md` files rather than directories:

| File                      | Characters | Purpose                         |
| ------------------------- | ---------- | ------------------------------- |
| `record-replay.md`        | 32,194     | Main record-and-replay document |
| `cua-driver.md`           | 13,027     | Desktop control driver          |
| `cua-recording.md`        | 2,770      | Recording conventions           |
| `app-clock.md`            | 2,845      | Clock app adaptation            |
| `app-notion.md`           | 2,323      | Notion adaptation               |
| `app-music.md`            | 1,385      | Music app adaptation            |
| `app-numbers.md`          | 1,089      | Numbers adaptation              |
| `app-spotify.md`          | 980        | Spotify adaptation              |
| `app-iphone-mirroring.md` | 415        | iPhone Mirroring adaptation     |

The `app-*` series is a **per-application operation manual** — "click play" has a different accessibility tree in every app, so each one has to be recorded individually.

### Platform mechanics

| Qualified name               | Characters | Purpose                                                                |
| ---------------------------- | ---------- | ---------------------------------------------------------------------- |
| `builtin/skill`              | 20,383     | How to write an effective skill (used when a user wants to author one) |
| `builtin/distill`            | 17,634     | Distillation conversation methodology                                  |
| `builtin/knowledge`          | 14,480     | Search and write across connected knowledge platforms                  |
| `builtin/sites`              | 13,104     | Deep reference for the Sites pipeline                                  |
| `builtin/evolution`          | 5,374      | Evolution-mode scoring anchors and workflow                            |
| `builtin/customs-extraction` | 8,177      | 83-field customs declaration extraction                                |

`builtin/evolution` and `builtin/distill` are only visible in their respective internal modes; a normal conversation never sees them.

## Writing a skill

A skill is a directory containing at minimum a `SKILL.md`:

```
my-skill/
├── SKILL.md          # Required: frontmatter + body
├── scripts/          # Executable scripts (black-box execution)
├── references/       # Reference material (read on demand)
├── templates/        # Template files
└── assets/           # Static assets
```

The `SKILL.md` frontmatter:

```yaml theme={null}
---
name: my-skill
description: One line on when this skill applies. This sentence is the only thing that reaches the discover list
---
```

<Warning>
  `description` decides whether the skill **gets remembered at all**. During `discover` the expert sees nothing else — a brilliant body behind a vague description is never activated. Write the triggering condition, not a self-introduction.

  Compare against the table above: `builtin/xlsx` says "any task where a spreadsheet is the primary input or output" — that is a trigger. Not "Excel processing capability," which is an introduction.
</Warning>

## Context cost

A skill body enters context in full on `activate`. Rough scale:

| Length              | Impact                                                             |
| ------------------- | ------------------------------------------------------------------ |
| \< 3,000 characters | Negligible                                                         |
| 3,000–10,000        | Normal; two or three can coexist                                   |
| 10,000–20,000       | Noticeable; activate one at a time                                 |
| > 20,000            | A single skill occupies a meaningful share; needs active restraint |

This is why [self-evolution](/en/documentation/how-it-works/darwin-evolution) breaks out `context_footprint` as its own scoring dimension **computed by code rather than self-scored by the model**: longer and more detailed usually scores higher when the model grades itself, but the real cost is paid on every single call.

## Related pages

<CardGroup cols={2}>
  <Card title="Skill system" icon="book-open" href="/en/documentation/concepts/skills">
    Concepts and usage
  </Card>

  <Card title="Tool Catalog" icon="wrench" href="/en/documentation/reference/tools-catalog">
    Full signatures for `skill` and `skill_manage`
  </Card>

  <Card title="Plugin Catalog" icon="puzzle-piece" href="/en/documentation/reference/plugins-catalog">
    Which plugin ships which skill
  </Card>

  <Card title="Self-evolution" icon="dna" href="/en/documentation/how-it-works/darwin-evolution">
    How skills improve automatically
  </Card>
</CardGroup>

<Note>
  Verified 2026-08-11. Sources: `services/agent-runtime/src/plugins/builtin/*/skills/` (47 directory-style skills, 7 flat `SKILL.md` files, 9 flat record-and-replay files). Character counts are measured document lengths.
</Note>
