Add atlas-push skill documentation and enhance git submodule management

- Introduced a new `SKILL.md` file for the `atlas-push` skill, detailing the automated workflow for pushing filesystem changes into Roblox Studio, including prerequisites, workflow steps, and conflict resolution strategies.
- Implemented `git_submodule_add` and `git_config_set` functions to manage git submodules and configuration settings, enhancing the git integration within the project.
- Updated the `InitCommand` to add agent submodules in parallel, improving the efficiency of the initialization process.

These changes aim to improve user guidance for the `atlas-push` skill and streamline git submodule handling in the project.
This commit is contained in:
Joe 2026-03-02 09:31:34 -06:00
parent e8dc9b09b9
commit cb3036a5d0
4 changed files with 311 additions and 17 deletions

View file

@ -424,6 +424,41 @@ pub fn git_clone_shallow(url: &str, target_dir: &Path) -> anyhow::Result<()> {
Ok(())
}
/// Register a git submodule at `path` within the repo rooted at `repo_dir`.
///
/// If `path` already contains a valid clone, git skips the network fetch and
/// just records the submodule in `.gitmodules` and the index.
pub fn git_submodule_add(repo_dir: &Path, url: &str, path: &str) -> anyhow::Result<()> {
let output = Command::new("git")
.args(["submodule", "add", url, path])
.current_dir(repo_dir)
.output()
.context("Failed to run git submodule add")?;
if !output.status.success() {
anyhow::bail!(
"git submodule add failed: {}",
String::from_utf8_lossy(&output.stderr)
);
}
Ok(())
}
/// Set a git config value in the repo at `repo_dir`.
pub fn git_config_set(repo_dir: &Path, key: &str, value: &str) -> anyhow::Result<()> {
let output = Command::new("git")
.args(["config", key, value])
.current_dir(repo_dir)
.output()
.context("Failed to run git config")?;
if !output.status.success() {
anyhow::bail!(
"git config failed: {}",
String::from_utf8_lossy(&output.stderr)
);
}
Ok(())
}
struct ResolvedInstance {
id: Ref,
class_name: String,