Skip to content
Back to skills

Profile System

ASecurity

Use for profile resolution in cli/src/app/config/profiles.rs and cli/src/app/config/profiles/, selection precedence/persistence, or active category computation. Not for ordinary edits to an existing category's package list.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 31, 2026
toolsgogit

Works with

  • cli

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add sneivandt/dotfiles --skill profile-system --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Profile System?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Profile System
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sneivandt-profile-system/badge)](https://www.skillsdirectory.com/skills/sneivandt-profile-system)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: profile-system
description: >
  Use for profile resolution in cli/src/app/config/profiles.rs and
  cli/src/app/config/profiles/,
  selection precedence/persistence, or active category computation. Not for
  ordinary edits to an existing category's package list.
---

# Profile System

The CLI has built-in `base` and `desktop` profiles. Resolution starts with
`base`, adds `desktop` for the desktop profile, then adds detected platform
categories and sorts/deduplicates the result.

## Resolution contract

Selection priority is:

```text
--profile > DOTFILES_PROFILE > repository dotfiles.profile > interactive prompt
```

Interactive selection is persisted to repository-local Git config. A persistence
failure is visible but does not invalidate an otherwise valid selection.

`Profile` carries its name and active categories. Configuration sections match
when every hyphen-separated category is active.

Non-interactive resolution without a selection is an error, not an implicit
default profile. An invalid higher-priority selection must not silently fall
back. Read-only discovery uses `resolve_read_only()` and never prompts for a
profile or persists a choice.

## Changing profiles

- Keep profile names and descriptions in the built-in inventory in
  `profiles.rs`; keep category resolution in `profiles/resolution.rs`.
- Keep platform category detection separate from user profile selection.
- Preserve selection precedence and non-interactive behavior.
- Update the preflight category list when adding a built-in category. Custom
  categories are not supported.
- Review config sections, validators, docs, completions, and tests that assume
  the existing profiles.
- Add resolution, persistence, category-set, missing-selection, and read-only
  discovery tests.

Start with [profile selection](../../../cli/src/app/config/profiles.rs) and
[category resolution](../../../cli/src/app/config/profiles/resolution.rs).
Use `toml-configuration` when category parsing changes.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.