VU

vuepress-plume-config

Manages configuration files for VuePress Plume themes.

Install

mkdir -p .claude/skills/vuepress-plume-config && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4311" && unzip -o skill.zip -d .claude/skills/vuepress-plume-config && rm skill.zip

Installs to .claude/skills/vuepress-plume-config

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Generate and write VuePress Plume theme config. Invoke when user asks to init or update theme config, including collections, navbar, sidebar, locales, plugins, and all theme features like search, comments, watermark, encryption, bulletin, copyright, llmstxt, replaceAssets, etc.
278 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Initialize VuePress Plume theme config
  • Update sidebar and navbar structures
  • Configure documentation plugins
  • Manage collections and locales
  • Write configuration to target files

How it works

The skill generates and manages VuePress Plume theme configuration files by mapping user inputs to the official theme schema.

Inputs & outputs

You give it
Theme configuration parameters
You get back
Generated config.ts or plume.config.ts file

When to use vuepress-plume-config

  • Initialize a new VuePress Plume project
  • Update theme sidebar and navbar structures
  • Configure documentation plugins and features

About this skill

VuePress Plume Config Skill

This skill generates, manages, and writes VuePress Plume theme configuration files based on the official documentation. It supports .vuepress/config.ts, .vuepress/config.js, and .vuepress/plume.config.ts.

When to Invoke

  • Initialize or update Plume theme configuration
  • Configure collections (post/doc types), navbar, sidebar, locales
  • Setup plugins (search, comments, watermark, llmstxt, etc.)
  • Configure encryption, bulletin, copyright, and other advanced features
  • Write the generated configuration into a specified target file

Documentation Sources

Configuration Files

The theme supports two configuration approaches:

1. .vuepress/config.ts (Recommended for full control)

import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'

export default defineUserConfig({
  // Site-level config: lang, title, description, base, head, locales
  theme: plumeTheme({
    // Full theme config available, including plugins, markdown, search, comment, etc.
  })
})

2. .vuepress/plume.config.ts (Recommended for clean separation)

import { defineThemeConfig } from 'vuepress-theme-plume'

export default defineThemeConfig({
  // Supported fields: hostname, home, logo, logoDark, appearance, profile, social,
  // navbarSocialInclude, navbar, collections, sidebar, sidebarScrollbar, aside, outline,
  // transition, footer, bulletin, copyright, prevPage, nextPage, createTime, locales,
  // docsRepo/docsBranch/docsDir, autoFrontmatter, editLinkPattern
})

::: warning Fields NOT supported in plume.config.ts plugins, markdown, codeHighlighter, search, comment, watermark, readingTime, copyCode, replaceAssets, editLink, lastUpdated, contributors, changelog, cache, hostname, configFile, encrypt, llmstxt :::

Input Schema

{
  "type": "object",
  "required": ["format", "target_file"],
  "properties": {
    "format": {
      "type": "string",
      "enum": ["plume-config-ts", "vuepress-config-ts", "vuepress-config-js"],
      "description": "Output file type and configuration style"
    },
    "target_file": {
      "type": "string",
      "description": "Target file path to write (relative to project root or absolute)"
    },
    "site": {
      "type": "object",
      "description": "VuePress site-level config (config.ts/js only)",
      "properties": {
        "lang": { "type": "string", "default": "zh-CN" },
        "title": { "type": "string" },
        "description": { "type": "string" },
        "base": { "type": "string" },
        "head": { "type": "array" },
        "locales": { "type": "object" }
      }
    },
    "theme": {
      "type": "object",
      "description": "Plume theme configuration",
      "properties": {
        "hostname": { "type": "string", "default": "" },
        "configFile": { "type": "string", "default": "" },
        "autoFrontmatter": {
          "type": ["object", "boolean"],
          "default": { "permalink": true, "createTime": true, "title": true },
          "properties": {
            "permalink": { "type": ["boolean", "string"], "default": true },
            "createTime": { "type": "boolean", "default": true },
            "title": { "type": "boolean", "default": true }
          }
        },
        "cache": {
          "type": ["string", "boolean"],
          "enum": ["memory", "filesystem", false],
          "default": "filesystem"
        },
        "docsRepo": { "type": "string", "default": "" },
        "docsBranch": { "type": "string", "default": "" },
        "docsDir": { "type": "string", "default": "" },
        "editLink": { "type": "boolean", "default": true },
        "editLinkPattern": { "type": "string", "default": "" },
        "lastUpdated": {
          "type": ["object", "boolean"],
          "default": { "formatOptions": { "dateStyle": "short", "timeStyle": "short" } }
        },
        "contributors": { "type": ["boolean", "object"], "default": true },
        "changelog": { "type": ["boolean", "object"], "default": false },
        "home": { "type": ["string", "boolean"], "default": "/" },
        "logo": { "type": ["string", "boolean"], "default": false },
        "logoDark": { "type": ["string", "boolean"], "default": false },
        "appearance": {
          "type": ["string", "boolean"],
          "enum": [true, false, "dark", "force-dark"],
          "default": true
        },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "name": { "type": "string" },
            "description": { "type": "string" },
            "circle": { "type": "boolean" },
            "location": { "type": "string" },
            "organization": { "type": "string" },
            "layout": { "type": "string", "enum": ["left", "right"], "default": "right" }
          }
        },
        "social": {
          "type": ["array", "boolean"],
          "default": false,
          "items": {
            "type": "object",
            "properties": {
              "icon": { "type": ["string", "object"] },
              "link": { "type": "string" },
              "ariaLabel": { "type": "string" }
            },
            "required": ["icon", "link"]
          }
        },
        "navbarSocialInclude": {
          "type": "array",
          "default": ["github", "twitter", "discord", "facebook"],
          "items": { "type": "string" }
        },
        "navbar": {
          "type": "array",
          "default": [],
          "items": {
            "type": ["string", "object"],
            "properties": {
              "text": { "type": "string" },
              "link": { "type": "string" },
              "prefix": { "type": "string" },
              "items": { "type": "array" },
              "icon": { "type": ["string", "object"] },
              "badge": { "type": ["string", "object"] },
              "activeMatch": { "type": "string" }
            }
          }
        },
        "collections": {
          "type": "array",
          "default": [],
          "description": "Content collections (post/doc)",
          "items": {
            "type": "object",
            "required": ["type", "dir", "title"],
            "properties": {
              "type": { "type": "string", "enum": ["post", "doc"] },
              "dir": { "type": "string" },
              "title": { "type": "string" },
              "linkPrefix": { "type": "string" },
              "tagsTheme": { "type": "string", "enum": ["colored", "gray", "brand"], "default": "colored" },
              "autoFrontmatter": { "type": ["object", "boolean"] },
              "include": { "type": "array", "items": { "type": "string" } },
              "exclude": { "type": "array", "items": { "type": "string" } },
              "pagination": { "type": ["boolean", "number", "object"] },
              "link": { "type": "string" },
              "postList": { "type": "boolean", "default": true },
              "tags": { "type": "boolean", "default": true },
              "tagsLink": { "type": "string" },
              "tagsText": { "type": "string" },
              "archives": { "type": "boolean", "default": true },
              "archivesLink": { "type": "string" },
              "archivesText": { "type": "string" },
              "categories": { "type": "boolean", "default": true },
              "categoriesLink": { "type": "string" },
              "categoriesText": { "type": "string" },
              "categoriesExpand": { "type": ["number", "string"], "default": "deep" },
              "categoriesTransform": { "type": "string" },
              "postCover": { "type": ["string", "object"] },
              "profile": { "type": ["object", "boolean"] },
              "social": { "type": ["array", "boolean"] },
              "sidebar": { "type": ["string", "array"] },
              "sidebarScrollbar": { "type": "boolean", "default": true },
              "sidebarCollapsed": { "type": "boolean", "default": false }
            }
          }
        },
        "sidebar": { "type": ["object", "boolean"] },
        "sidebarScrollbar": { "type": "boolean", "default": true },
        "aside": { "type": ["boolean", "string"], "enum": [true, false, "left"], "default": true },
        "outline": { "type": ["boolean", "number", "array", "string"], "default": [2, 3] },
        "transition": {
          "type": ["boolean", "object"],
          "default": true,
          "properties": {
            "page": { "type": "boolean", "default": true },
            "postList": { "type": "boolean", "default": true },
            "appearance": { "type": ["boolean", "string"], "default": "fade" }
          }
        },
        "footer": {
          "type": ["boolean", "object"],
          "default": false,
          "properties": {
            "message": { "type": "string" },
            "copyright": { "type": "string" }
          }
        },
        "bulletin": {
          "type": ["boolean", "object"],
          "default": false,
          "properties": {
            "layout": { "type": "string", "enum": ["top-left", "top-right", "bottom-left", 

---

*Content truncated.*

When not to use it

  • Modifying non-Plume VuePress themes
  • Directly editing files without theme-specific constraints

Limitations

  • Certain fields are not supported in plume.config.ts
  • Requires consistency between format and target file extension

How it compares

It automates the complex configuration structure of Plume themes compared to manual file editing.

Compared to similar skills

vuepress-plume-config side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
vuepress-plume-config (this skill)25moNo flagsIntermediate
vue-best-practices195moNo flagsIntermediate
vue-testing-best-practices56moNo flagsIntermediate
vue-debug-guides46moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry