Skills for working with hologit
npx claudepluginhub jarvusinnovations/hologitSkills for configuring and using hologit
A Git-native framework for declarative code automation that makes it simple to combine code from multiple sources and apply transformations efficiently.
Hologit enables you to define virtual "holobranches" within your Git repository that can:
Mix together content from:
Apply transformations through "hololenses" using:
Project changes efficiently by:
A holobranch is a virtual branch defined in .holo/branches/ that specifies:
Unlike regular Git branches, holobranches are computed on-demand and can mix content from multiple sources while maintaining clean history.
Sources let you pull in code from:
Sources are configured in .holo/sources/ and can be referenced by holobranches to include specific files or directories.
Lenses are transformations that can be applied to source content through:
Lenses are configured in .holo/lenses/ and can be chained together to form complex build pipelines.
git holo init
git holo branch create my-branch
git holo source create https://github.com/example/repo
git holo project my-branch
See the Installation Guide and Grand Tour for detailed setup and usage instructions.
Hologit includes a Claude Code plugin that gives Claude deep knowledge of hologit's configuration system, CLI, stock lenses, and workflows.
/plugin marketplace add JarvusInnovations/hologit
/plugin install hologit@hologit
Once installed, Claude can help you configure .holo/ files, set up sources and mappings, choose and configure stock lenses, and debug projection issues.
Hologit can also be used as an npm module to compose git trees programmatically, without .holo/ TOML files in the source repositories:
const { Repo, Workspace, Branch, Projection } = require('hologit');
const repo = new Repo({ gitDir: '/path/to/.git', ref: 'HEAD' });
const rootTree = repo.createTree();
await rootTree.writeChild('.holo/config.toml', '[holospace]\nname = "app"\n');
const workspace = new Workspace({
root: rootTree,
sources: {
'base': { url: '/path/to/base', ref: 'refs/heads/main' },
'overlay': { url: '/path/to/overlay', ref: 'refs/heads/main' }
}
});
const branch = new Branch({
workspace,
name: 'composed',
phantom: {},
mappings: {
'_base': { holosource: 'base', files: ['**'] },
'_overlay': { holosource: 'overlay', files: ['**'], after: ['base'] }
}
});
const treeHash = await Projection.projectBranch(branch, { lens: false });
See the Programmatic API docs for full details and the ProjectionPlan fluent builder API.
The projection engine is being rewritten in Rust for performance, structured as two crates in a Cargo workspace: