mirror of
https://github.com/hanzoai/frames.git
synced 2026-09-24 00:08:03 +00:00
Every SKILL.md already declared the new name — name: frames, frames-cli, frames-core, and so on — but the directories were never moved, so the tree carried frames-* in content and hyperframes-* on disk. Everything that resolves a skill by path missed: the core-skill list, the plugin marketplace pin, and the docs the CLI reads at runtime. Eight tests failed on main because the files they open do not exist. The directories now match what the files say they are, and the guide the claude-design contract reads takes the name that contract already used.
1.4 KiB
1.4 KiB
Install Locations
Default paths
| Item type | Default install path | Configured by |
|---|---|---|
| Block | compositions/<name>.html |
frames.json#paths.blocks |
| Component | compositions/components/<name>.html |
frames.json#paths.components |
How path remapping works
The target field in each item's registry-item.json specifies a default install path. The add command remaps the prefix based on frames.json#paths:
- Block targets starting with
compositions/get remapped to<paths.blocks>/ - Component targets starting with
compositions/components/get remapped to<paths.components>/
frames.json
Created automatically by frames init. If it doesn't exist when you run add, the CLI creates it with defaults:
{
"$schema": "https://frames.hanzo.ai/schema/frames.json",
"registry": "https://raw.githubusercontent.com/hanzoai/frames/main/registry",
"paths": {
"blocks": "compositions",
"components": "compositions/components",
"assets": "assets"
}
}
Custom layouts
To install blocks into a scenes/ directory instead of compositions/:
{
"paths": {
"blocks": "scenes"
}
}
Then frames add data-chart writes to scenes/data-chart.html instead of compositions/data-chart.html. The snippet output reflects the remapped path.