Use when user asks "what statusline components are available", "list statusline components", "show statusline components", "which statusline components", "configure statusline", "enable/disable statusline components", "change statusline order", or wants to manage statusline component configuration globally or per-project
From statuslinenpx claudepluginhub dhughes/claude-marketplace --plugin statuslineThis skill is limited to using the following tools:
scripts/list-components.shYou MUST follow the workflow below EXACTLY as written. The workflow uses a conversational approach:
User: "Help me configure the global statusline"
Your actions:
The conversational approach allows users to express changes naturally. Understand these patterns:
Incremental changes (most common when current state is shown):
Absolute state (replace everything):
Flexible naming:
The key insight: by showing what's currently enabled, users naturally think in terms of deltas (what to add/remove) rather than absolute state.
Follow these steps in order. Do not skip steps.
START HERE. This is ALWAYS the first step.
DO NOT read the current config file. DO NOT ask the user what they want to do. Just run the discovery script.
Run the discovery script to find all available components:
${CLAUDE_PLUGIN_ROOT}/skills/configure/scripts/list-components.sh "<workspace-path>"
The script returns JSON:
{
"components": [
{"Namespace": "builtin", "Name": "directory", "Path": "..."},
{"Namespace": "builtin", "Name": "git-branch", "Path": "..."},
{"Namespace": "personal", "Name": "my-component", "Path": "..."},
{"Namespace": "project", "Name": "deployment-env", "Path": "..."}
]
}
Parse this JSON to get all discovered components.
If the user asked "what components are available?" without wanting to configure, stop here and display the components grouped by namespace:
Built-in components:
- builtin:directory
- builtin:git-branch
- builtin:model
Personal components:
- personal:my-component
Project components:
- project:deployment-env
Do not proceed to configuration.
If the user is configuring (not just listing), determine the scope:
If user already specified the scope (e.g., "configure global statusline" or "configure project statusline"):
If user did NOT specify the scope (e.g., "configure statusline"):
Based on the chosen scope, determine which components are available:
Global scope:
Project scope:
Create a list of component IDs in the format namespace:name (e.g., builtin:directory).
Determine the config file path based on scope:
~/.claude/statusline-components/statusline.json{workspace}/.claude/statusline-components/statusline.jsonTry to read the current config file. If it doesn't exist or is invalid JSON, treat it as empty config {}.
Parse the add and remove arrays to determine current state.
Display the current configuration state and available components in a clear, organized way:
Format:
Currently enabled:
- builtin:directory
- builtin:git-branch
- builtin:model
Currently disabled:
- builtin:version
Available components:
- builtin:directory (Show current directory)
- builtin:git-branch (Show git branch)
- builtin:model (Show current model)
- builtin:version (Show plugin version)
- personal:custom-component (Your custom component)
Which components would you like to enable or disable?
Important display rules:
Then wait for the user's natural language response. They might say things like:
Interpret the user's natural language response to determine which components to enable and disable.
Parsing guidelines:
Look for explicit enable/add keywords:
Look for explicit disable/remove keywords:
Handle "only" or "just" patterns:
Accept partial names:
Handle conflicts:
Empty response:
Example parsing:
User says: "Enable version and disable model"
User says: "Just directory and git-branch"
Determine the correct config file path:
~/.claude/statusline-components/statusline.json{workspace}/.claude/statusline-components/statusline.jsonCreate the directory if it doesn't exist.
Build the configuration based on parsed changes from Step 7:
{
"add": [<enabled components>],
"remove": [<disabled components>]
}
Configuration rules:
Merging with existing config:
add and remove arrays from Step 5add array, remove from remove arrayremove array, remove from add arrayComponent ordering:
add array for components that stay enabledadd arrayremove array alphabetically for consistencyConflict resolution:
add and remove, disable winsadd and keep in removeEmpty config:
{}Scope-specific behavior:
add/remove control all projectsadd/remove are incremental to global configWrite the configuration file.
Tell the user:
add array determines display order)Example:
Statusline configuration updated:
- Enabled: builtin:version
- Disabled: builtin:model
Current statusline:
- builtin:directory
- builtin:git-branch
- builtin:version
Configuration saved to: ~/.claude/statusline-components/statusline.json
Restart Claude Code for changes to take effect.
To change component order, edit the JSON file and reorder items in the "add" array.
~/.claude/statusline-components/statusline.json){
"add": [
"builtin:directory",
"builtin:git-branch",
"builtin:model"
],
"remove": [
"builtin:version"
]
}
add: Components to enable globally (array order = display order)remove: Components to disable globally{workspace}/.claude/statusline-components/statusline.json){
"add": [
"project:deployment-env"
],
"remove": [
"builtin:model"
]
}
add: Additional components to enable for this projectremove: Components to disable for this project (even if globally enabled)The statusline plugin processes configuration in this order:
add if specified)remove to filter out unwanted componentsadd to enable additional componentsremove to disable specific componentsThis means:
remove disables components for all projectsadd can re-enable globally removed componentsremove can disable globally enabled componentsnamespace:nameadd array determines display order{} means use defaultsGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.