Add dotfile subcommand and --local install option#1
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds first-class dotfile management to agent-manager, expands CLI import capabilities, and updates install/build tooling and documentation to support the new workflows.
Changes:
- Introduces a new
dotfilecommand group with subcommands (list/link/unlink/new/import/status/private) plus aDotfileModelloader. - Adds new import functionality for skills (and improves command import handling for symlinks).
- Updates repo/git tooling (
repo --init/--use,GitRunner.runIn) and installer behavior (install.py --local, version stamping), along with docs and CI tweaks.
Reviewed changes
Copilot reviewed 24 out of 25 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| Sources/AgentManager/Library/Models/DotfileModel.swift | New dotfile model (load/resolve/link-status) backing the dotfile CLI. |
| Sources/AgentManager/Library/GitRunner.swift | Adds runIn(directory, ...) to run git commands from arbitrary working dirs. |
| Sources/AgentManager/Library/FileManager+Helpers.swift | Exposes expandingTilde and adds dotfilesDir global path. |
| Sources/AgentManager/CLI/Skill/Skills.swift | Registers new skill import subcommand. |
| Sources/AgentManager/CLI/Skill/SkillImport.swift | New command to copy skills from agent dirs into the repo. |
| Sources/AgentManager/CLI/Dotfile/DotfileUnlink.swift | New command to remove dotfile symlinks (with safety checks). |
| Sources/AgentManager/CLI/Dotfile/DotfileStatus.swift | New command showing dotfile link status. |
| Sources/AgentManager/CLI/Dotfile/Dotfiles.swift | New dotfile command group wiring subcommands. |
| Sources/AgentManager/CLI/Dotfile/DotfilePrivate.swift | New command to toggle dotfile privacy by renaming directories. |
| Sources/AgentManager/CLI/Dotfile/DotfileNew.swift | New command scaffolding a dotfile entry + placeholder file. |
| Sources/AgentManager/CLI/Dotfile/DotfileList.swift | New command listing dotfiles + metadata. |
| Sources/AgentManager/CLI/Dotfile/DotfileLink.swift | New command to create dotfile symlinks at target locations. |
| Sources/AgentManager/CLI/Dotfile/DotfileImport.swift | New command to scan/import common dotfiles from home directory (optional link). |
| Sources/AgentManager/CLI/Core/Git/Repo.swift | Changes repo command to support --init <path> and --use <path>. |
| Sources/AgentManager/CLI/Command/CommandImport.swift | Improves import to handle symlinked command files safely. |
| Sources/AgentManager/App.swift | Registers Dotfiles in the top-level CLI and prints repo path on bare invocation. |
| quickinstall.sh | Removes legacy shell quick installer script. |
| Package.swift | Updates tools version and pins swift-argument-parser. |
| install.sh | Removes legacy shell installer script. |
| install.py | Adds --local install option and stamps build date into version during source builds. |
| AGENTS.md | New repository guidance doc for agents and project conventions. |
| .gitignore | Adds ignore rule for private dotfiles. |
| .github/workflows/release.yml | Switches runner to macos-latest. |
| .github/workflows/ci.yml | Switches CI/lint runner to macos-latest. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 34 out of 60 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (2)
quickinstall.py:42
GITIGNORE_CONTENTused by the quick installer doesn't include the new private dotfiles pattern, sodotfiles/*.private/will be committed by default in freshly created repos. Update the template to match the repository.gitignore(include private dotfiles).
install.py:77--localand--globalcan both be provided, but the script silently prioritizes--global. Consider making them mutually exclusive (argparse mutually exclusive group) or emitting a clear error when both are set.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces comprehensive support for managing dotfiles in the
agent-managerproject, including a new CLI command group, a data model, and several subcommands for dotfile operations. It also updates documentation and makes minor improvements to installation and package configuration.Dotfile Management Feature:
dotfileCLI command group with subcommands for listing, linking, unlinking, creating, checking status, and toggling privacy of dotfiles (Dotfiles.swift,DotfileList.swift,DotfileLink.swift,DotfileUnlink.swift,DotfileNew.swift,DotfileStatus.swift,DotfilePrivate.swift). [1] [2] [3] [4] [5] [6] [7] [8] [9]DotfileModelstruct to represent and load dotfiles, encapsulating metadata and utility methods for symlink status and file resolution (DotfileModel.swift).dotfilesDiras a global and updated helpers to support dotfile paths (FileManager+Helpers.swift).expandingTildefor path expansion in dotfile linking logic (FileManager+Helpers.swift).Documentation Updates:
AGENTS.mdwith a detailed overview of the project, architecture, command structure, and code conventions.AGENTS.mdfromCLAUDE.md.Build and Installation Improvements:
Package.swiftto require Swift tools version 6.2 and pinswift-argument-parserto version 1.7.1 for improved reproducibility.--localinstall option toinstall.pyto mirror the default behavior ofquickinstall.py. [1] [2]CLI Structure and Miscellaneous:
Dotfilescommand group in the main CLI definition (App.swift).These changes collectively provide first-class, flexible management of dotfiles alongside skills and commands in the
agent-managertool.