agentleFS
gug007gug007/lpm/lpm-config/SKILL.md

lpm-config

Skill150 starsChanged 5 days agoMITView on GitHub

Create and edit lpm YAML configs for projects, duplicates, worktree metadata, services, actions, header and footer button zones and zone layers, terminals, profiles, SSH projects, and shared config layers. Use when the user explicitly asks to configure lpm, add an lpm service/action/button/zone/terminal, edit `.lpm.yml`, or manage lpm templates or global config. For creating or removing linked Git worktrees and operating running projects, use `lpm-cli`.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Create and modify lpm config on macOS exclusively through lpm config get and lpm config apply.

    line 9
  2. Distinctive:

    Read references/core.md for project identity, services, dependencies, profiles, duplicates, linked Git worktrees, auto pull, and project …

    line 13
  3. Distinctive:

    Read references/actions.md when adding or changing actions, buttons, terminals, inputs, ports, shortcuts, colors, dynamic labels, popups, …

    line 14
  4. Distinctive:

    Read references/zones.md when creating, filling, rearranging, or removing button zones or zone layers.

    line 15
  5. Very specific:

    Read references/sharing.md for .lpm.yml, global config, templates, extends, layering, and sparse overrides.

    line 16
  6. Very specific:

    Read references/ssh.md for remote projects or mode: sync.

    line 17
  7. Distinctive:

    Read references/validation.md before preparing a candidate and follow its transactional workflow.

    line 18
  8. Very specific:

    No match: offer to create a project for the current directory or configure one of the returned available projects.

    line 32
  9. Distinctive:

    Use these explicit layer overrides:

    line 34
  10. Distinctive:

    Ask only when the requested shape is genuinely ambiguous.

    line 72
  11. Distinctive:

    Read the selected layer and its revision:

    line 78
  12. Very specific:

    If the app is not running or config get/apply is unavailable, tell the user to start or update lpm.

    line 100

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Configure lpm

Create and modify lpm config on macOS exclusively through lpm config get and lpm config apply. Never modify a live project, repo, global, or template config directly with an editor, filesystem tool, patch, redirection, or script. The CLI validates the candidate before the app atomically replaces the destination.

Load only the relevant reference

  • Read references/core.md for project identity, services, dependencies, profiles, duplicates, linked Git worktrees, auto pull, and project creation.
  • Read references/actions.md when adding or changing actions, buttons, terminals, inputs, ports, shortcuts, colors, dynamic labels, popups, agent prompts, or nested menus.
  • Read references/zones.md when creating, filling, rearranging, or removing button zones or zone layers.
  • Read references/sharing.md for .lpm.yml, global config, templates, extends, layering, and sparse overrides.
  • Read references/ssh.md for remote projects or mode: sync.
  • Read references/validation.md before preparing a candidate and follow its transactional workflow.

Resolve the target

Honor an explicit project or layer from the user. Otherwise run:

lpm config resolve --cwd . --json

Interpret the result:

  • One match: use the returned project name with lpm config get; never edit the returned path. A match locates the file even when the app cannot load it; validation reports what to fix.
  • Multiple matches: ask which candidate to use.
  • No match: offer to create a project for the current directory or configure one of the returned available projects.

Use these explicit layer overrides:

  • “globally” or “all my projects” → ~/.lpm/global.yml
  • “share with the team”, “check it in”, or “for everyone” → <root>/.lpm.yml
  • “template” or “reuse across projects” → ~/.lpm/templates/<name>.yml

When lpm config resolve is unavailable, inspect the YAML project files read-only. Match the current directory against expanded root paths by path components; the deepest root wins. An SSH project never matches by root or ssh.dir (a path on the host); only its local sync mirror ~/.lpm/sync/<project> matches, where <project> is the project's file name (~/.lpm/projects/<project>.yml), not its name: field. Do not parse YAML with line-oriented tools and do not write a config without lpm config apply.

Choose the shape

IntentConfig shape
Long-running process started with the projectservices
One-shot command or buttonactions
Persistent interactive shellactions with type: terminal
Start prerequisites firstservice dependsOn
Hold dependents until a service is upservice ready (port, URL or log line)
Ask for parametersaction inputs
Default action plus alternativesparent cmd plus nested actions
Split button whose main segment repeats the last used optionparent primary: last-used plus nested actions
Menu with no defaultnested actions without parent cmd
Framed group of buttons in the header or footerzones entry with rows, plus display: <zone> on each button
Several button sets in one zone, switched with dotszone layers, plus layer: <key> on each button
Fold a zone into one button with a hover popupcollapsed: true on the zone's entry in its source file
Put a button declared elsewhere into a zone or layersparse override with display, layer, and position only
Colored button or terminal tabaction color
Label or emoji that shows the branch, the last tag and its age, the next version, or a command's output (on a button, input or option){{git.branch}}, {{git.tag}}, {{git.tagAge}}, {{git.nextPatch}} or $(command) in label or emoji
Chart, graph or any page shown when the pointer rests on a button (long press on the phone)action popup with html and data
Agent terminal that starts with a tasktype: terminal with an agent cmd plus prompt
Hidden command with completion notificationtype: background
Send command into the focused terminaltype: command
Reused visible panetype: terminal plus reuse: true
Team-shared config<root>/.lpm.yml
Reusable action settemplate plus extends
Remote executionproject ssh block
Scheduled task (automation)not a config edit: lpm automations add from lpm-cli; keep any jobs section as it is
Let the app pull one project from origin by itself, or neverautoPull, set with lpm auto-pull <project> --set on|off|default; see core.md

Ask only when the requested shape is genuinely ambiguous. For “button with options,” distinguish a split button, dropdown, and input prompt. For a terminal action, distinguish one reused pane from a fresh pane each run.

Apply the change

For a new project, inspect repo signals such as package.json, Makefile, docker-compose.yml, Procfile, and mise.toml. Detect long-running services separately from one-shot test, lint, build, migration, and deploy actions.

Read the selected layer and its revision:

lpm config get --layer project --project <name> --json
lpm config get --layer repo --project <name> --json
lpm config get --layer global --json
lpm config get --layer template --template <name> --json

Use --create with both get and apply when intentionally creating a missing project or template. Build the candidate from the returned content in a temporary file, preserving unrelated fields and formatting where practical. Use shorthand only when an entry needs no options. Set confirm: true for destructive operations.

Apply the candidate using the exact returned revision:

lpm config apply --layer <layer> <target-args> \
  --if-revision <revision> --file <candidate-path> --json

The command must return applied: true before reporting success. Fix validation errors in the temporary candidate and retry. On a revision conflict, run get again and reapply the intended change to the new content instead of forcing an overwrite.

Confirm only before replacing an existing config during intentional creation. Do not confirm an unambiguous edit. Config deletion must go through the lpm app; never delete a config file directly.

If the app is not running or config get/apply is unavailable, tell the user to start or update lpm. Do not fall back to direct writes.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.