This skill should be used when the user asks to "configure powerline", "set up status line", "use my default status line", "configure powerline as usual", "change the powerline theme", "update status line settings", or mentions powerline configuration. Provides comprehensive guidance for creating and managing .claude/.claude-powerline.json configuration and integrating it with Claude Code settings.
From settings-presetsnpx claudepluginhub aaronbassett/agent-foundry --plugin settings-presetsThis skill uses the workspace's default tool permissions.
examples/README.mdexamples/custom-theme.jsonexamples/default.jsonexamples/minimal.jsonexamples/two-lines.jsonreferences/segments.mdreferences/themes-and-styles.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Configure Claude Code's status line using the powerline package. Create or update .claude/.claude-powerline.json with user preferences and integrate it into .claude/settings.local.json. Handle everything from applying default configurations to customizing specific segments, themes, and layouts based on natural language requests.
Activate when users want to:
Follow this safe, confirmable workflow for all configuration changes:
Parse the user's request to determine:
Always check current state before making changes:
# Check if .claude directory exists
if [ ! -d ".claude" ]; then
mkdir -p .claude
fi
# Read existing powerline config if present
if [ -f ".claude/.claude-powerline.json" ]; then
cat .claude/.claude-powerline.json
fi
# Read existing settings if present
if [ -f ".claude/settings.local.json" ]; then
cat .claude/settings.local.json
fi
Before any modifications, create backups with .backup extension:
# Backup powerline config if exists
if [ -f ".claude/.claude-powerline.json" ]; then
cp .claude/.claude-powerline.json .claude/.claude-powerline.json.backup
fi
# Backup settings if exists
if [ -f ".claude/settings.local.json" ]; then
cp .claude/settings.local.json .claude/settings.local.json.backup
fi
If files exist, verify they contain valid JSON:
# Validate powerline config
if [ -f ".claude/.claude-powerline.json" ]; then
if ! jq empty .claude/.claude-powerline.json 2>/dev/null; then
echo "ERROR: .claude/.claude-powerline.json contains invalid JSON"
exit 1
fi
fi
# Validate settings
if [ -f ".claude/settings.local.json" ]; then
if ! jq empty .claude/settings.local.json 2>/dev/null; then
echo "ERROR: .claude/settings.local.json contains invalid JSON"
exit 1
fi
fi
On validation failure: Abort and ask user to fix the malformed JSON before proceeding.
Create the new powerline configuration based on user request:
For default configuration request:
For customization request:
references/segments.md)For theme/style changes:
references/themes-and-styles.md)Write the new .claude/.claude-powerline.json:
# Write new powerline config
echo '{...}' | jq '.' > .claude/.claude-powerline.json
Update .claude/settings.local.json to include statusLine configuration:
# If settings.local.json doesn't exist, create it
if [ ! -f ".claude/settings.local.json" ]; then
echo '{}' > .claude/settings.local.json
fi
# Merge statusLine configuration
jq '. + {
"statusLine": {
"type": "command",
"command": "npx -y @owloops/claude-powerline@latest --config=.claude/.claude-powerline.json"
}
}' .claude/settings.local.json > .claude/settings.local.json.tmp
mv .claude/settings.local.json.tmp .claude/settings.local.json
Critical: Only modify the statusLine key. Preserve all other settings in the file.
After writing new configuration, ask for confirmation:
I've updated your powerline configuration with the following changes:
[Describe what changed]
The new configuration:
- Theme: tokyo-night
- Style: powerline
- Segments: [list enabled segments]
Do the changes work as expected?
If user confirms changes work:
# Remove backup files
rm -f .claude/.claude-powerline.json.backup
rm -f .claude/settings.local.json.backup
If user says changes don't work or wants to revert:
# Restore from backups
if [ -f ".claude/.claude-powerline.json.backup" ]; then
mv .claude/.claude-powerline.json.backup .claude/.claude-powerline.json
fi
if [ -f ".claude/settings.local.json.backup" ]; then
mv .claude/settings.local.json.backup .claude/settings.local.json
fi
# Delete any remaining backup files
rm -f .claude/.claude-powerline.json.backup
rm -f .claude/settings.local.json.backup
Always ensure backup files are removed regardless of outcome.
When user requests default configuration ("use my default", "configure powerline as usual", etc.), use this template:
{
"theme": "tokyo-night",
"display": {
"style": "powerline",
"lines": [
{
"segments": {
"directory": {
"enabled": true,
"style": "basename"
},
"git": {
"enabled": true,
"showSha": false,
"showOperation": true,
"showTimeSinceCommit": true,
"showRepoName": true
}
}
},
{
"segments": {
"model": {
"enabled": true
},
"metrics": {
"enabled": true,
"showResponseTime": false,
"showLastResponseTime": false,
"showDuration": false,
"showMessageCount": true,
"showLinesAdded": true,
"showLinesRemoved": true
},
"block": {
"enabled": true,
"type": "tokens",
"burnType": "tokens"
},
"context": {
"enabled": true,
"showPercentageOnly": true
}
}
}
]
}
}
Minimal configurations:
Layout requests:
Segment customization:
directory.style to "basename"directory.style to "full"git.showSha to trueTheme/style changes:
theme property onlydisplay.style onlyBefore writing configuration, validate:
references/themes-and-styles.md)references/segments.md)On validation failure: Inform user of invalid value and suggest corrections.
Critical principle: Only modify what user explicitly requests.
When updating .claude/.claude-powerline.json:
When updating .claude/settings.local.json:
statusLine objectattribution, model, etc.)Example merging logic:
# Read existing settings
EXISTING=$(cat .claude/settings.local.json)
# Merge with new statusLine
echo "$EXISTING" | jq '. + {
"statusLine": {
"type": "command",
"command": "npx -y @owloops/claude-powerline@latest --config=.claude/.claude-powerline.json"
}
}' > .claude/settings.local.json
See examples/ directory for complete working examples:
examples/default.json - Default configurationexamples/minimal.json - Minimal single-line configurationexamples/two-lines.json - Two-line layout with separationexamples/custom-theme.json - Custom theme applicationFor detailed configuration options:
references/segments.md - Complete segment reference with all configuration optionsreferences/themes-and-styles.md - Available themes and styles with descriptionsWhen users ask "what themes are available" or "what segments can I use":
If .claude/ doesn't exist, create it automatically:
mkdir -p .claude
If configuration files don't exist, create them with valid JSON:
echo '{}' > .claude/settings.local.json
If existing files contain invalid JSON:
jq emptyIf user wants to revert: