rename skills dirs for consistency
3clyp50 committed
Feb 2, 2026 at 15:28 UTC
2baac232867bd6695e0fdccbec35cca9a0f5fe80
31 files changed
+33
-33
docs/CONTRIBUTING-SKILLS.md
+5
-5
@@ -341,9 +341,9 @@ def test_skill_has_required_fields():
341
# Edit usr/skills/custom/my-skill/SKILL.md
342
```
343
344
-3. **Move to Builtin (for contribution):**
344
+3. **Move to Default (for contribution):**
345
```bash
346
- mv usr/skills/custom/my-skill usr/skills/builtin/my-skill
346
+ mv usr/skills/custom/my-skill usr/skills/default/my-skill
347
```
348
349
4. **Create a Pull Request:**
@@ -433,7 +433,7 @@ my-skills-collection/
433
434
### Q: Where should I put my skills?
435
436
-**A:** During development, use `usr/skills/custom/`. For contribution, move to `usr/skills/builtin/`.
436
+**A:** During development, use `usr/skills/custom/`. For contribution, move to `usr/skills/default/`.
437
438
### Q: How are skills discovered?
439
@@ -441,7 +441,7 @@ my-skills-collection/
441
442
### Q: Can I use skills from other platforms?
443
444
-**A:** Yes! The SKILL.md standard is cross-platform. Skills from Claude Code, Cursor, or other compatible platforms can be copied directly to `usr/skills/shared/`.
444
+**A:** Yes! The SKILL.md standard is cross-platform. Skills from Claude Code, Cursor, or other compatible platforms can be copied directly to `usr/skills/custom/`.
445
446
### Q: How do I update a skill?
447
@@ -455,7 +455,7 @@ my-skills-collection/
455
456
## Example Skills to Learn From
457
458
-Check out these well-structured skills in `usr/skills/builtin/`:
458
+Check out these well-structured skills in `usr/skills/default/`:
459
460
- `brainstorming/` - Requirements exploration workflow
461
- `debugging/` - Systematic debugging methodology
docs/architecture.md
+1
-2
@@ -298,9 +298,8 @@ Your detailed instructions here...
298
#### Directory Structure
299
| Directory | Description |
300
|-----------|-------------|
301
-| `/usr/skills/builtin` | Built-in skills included with Agent Zero |
301
+| `/usr/skills/default` | Default skills included with Agent Zero |
302
| `/usr/skills/custom` | Your custom skills (create folders here) |
303
-| `/usr/skills/shared` | Skills shared across agents |
303
304
#### Adding Skills
305
1. Create folder in `usr/skills/custom` (e.g., `usr/skills/custom/my-skill`)
python/api/skills_import.py
+4
-4
@@ -14,7 +14,7 @@ from werkzeug.utils import secure_filename
14
15
class SkillsImport(ApiHandler):
16
"""
17
- Import an external skills pack (.zip) into skills/shared/<namespace>/...
17
+ Import an external skills pack (.zip) into usr/skills/custom/<namespace>/...
18
Performs the actual import (not dry-run).
19
"""
20
@@ -31,9 +31,9 @@ class SkillsImport(ApiHandler):
31
return {"success": False, "error": "No context id provided"}
32
_context = self.use_context(ctxid)
33
34
- dest = (request.form.get("dest", "shared") or "shared").strip().lower()
35
- if dest not in ("shared", "custom", "project"):
36
- dest = "shared"
34
+ dest = (request.form.get("dest", "custom") or "custom").strip().lower()
35
+ if dest not in ("custom", "project"):
36
+ dest = "custom"
37
38
conflict = (request.form.get("conflict", "skip") or "skip").strip().lower()
39
if conflict not in ("skip", "overwrite", "rename"):
python/api/skills_import_preview.py
+4
-4
@@ -14,7 +14,7 @@ from werkzeug.utils import secure_filename
14
15
class SkillsImportPreview(ApiHandler):
16
"""
17
- Preview importing an external skills pack (.zip) into skills/shared/<namespace>/...
17
+ Preview importing an external skills pack (.zip) into usr/skills/custom/<namespace>/...
18
Uses dry-run (no copying).
19
"""
20
@@ -31,9 +31,9 @@ class SkillsImportPreview(ApiHandler):
31
return {"success": False, "error": "No context id provided"}
32
_context = self.use_context(ctxid)
33
34
- dest = (request.form.get("dest", "shared") or "shared").strip().lower()
35
- if dest not in ("shared", "custom", "project"):
36
- dest = "shared"
34
+ dest = (request.form.get("dest", "custom") or "custom").strip().lower()
35
+ if dest not in ("custom", "project"):
36
+ dest = "custom"
37
38
conflict = (request.form.get("conflict", "skip") or "skip").strip().lower()
39
if conflict not in ("skip", "overwrite", "rename"):
python/helpers/memory.py
+1
-1
@@ -325,7 +325,7 @@ class Memory:
325
326
# NOTE: Skills indexing into Memory is intentionally disabled for now.
327
# If we decide to replace instruments with skills in memory, re-enable this block:
328
- # skills_dirs = ["custom", "builtin", "shared"]
328
+ # skills_dirs = ["custom", "default"]
329
# for skills_subdir in skills_dirs:
330
# skills_path = files.get_abs_path("usr", "skills", skills_subdir)
331
# index = knowledge_import.load_knowledge(
python/helpers/migration.py
+3
-1
@@ -37,7 +37,8 @@ def migrate_user_data() -> None:
37
# We use _merge_dir_contents because we want to move the *contents* of default/
38
# into the parent directory, not move the default directory itself.
39
_merge_dir_contents("knowledge/default", "knowledge")
40
- _merge_dir_contents("skills/default", "usr/skills")
40
+ _merge_dir_contents("skills/default", "usr/skills/default")
41
+ _merge_dir_contents("skills/builtin", "usr/skills/default")
42
43
# --- Cleanup -------------------------------------------------------------------
44
@@ -105,6 +106,7 @@ def _cleanup_obsolete() -> None:
106
to_remove = [
107
"knowledge/default",
108
"skills/default",
109
+ "skills/builtin",
110
"skills",
111
"memory"
112
]
python/helpers/skills.py
+2
-2
@@ -14,7 +14,7 @@ except Exception: # pragma: no cover
14
yaml = None # type: ignore
15
16
17
-SkillSource = Literal["custom", "builtin", "shared", "project", "framework"]
17
+SkillSource = Literal["custom", "default", "project", "framework"]
18
19
20
@dataclass(slots=True)
@@ -49,7 +49,7 @@ def get_skill_roots(
49
framework_id: Optional[str] = None,
50
) -> List[Tuple[SkillSource, Path]]:
51
base = get_skills_base_dir()
52
- order = order or ["custom", "builtin", "shared"]
52
+ order = order or ["custom", "default"]
53
roots: List[Tuple[SkillSource, Path]] = [(src, base / src) for src in order]
54
55
# Framework skills take priority when active
python/helpers/skills_cli.py
+1
-2
@@ -43,9 +43,8 @@ def get_skills_dirs() -> List[Path]:
43
"""Get all skill directories"""
44
base = Path(files.get_abs_path("usr", "skills"))
45
return [
46
- base / "builtin",
46
base / "custom",
48
- base / "shared",
47
+ base / "default",
48
]
49
50
python/helpers/skills_import.py
+2
-2
@@ -14,7 +14,7 @@ from python.helpers.skills import discover_skill_md_files
14
15
16
ConflictPolicy = Literal["skip", "overwrite", "rename"]
17
-DestSubdir = Literal["shared", "custom", "project"]
17
+DestSubdir = Literal["custom", "project"]
18
19
# Project skills folder name (inside .a0proj)
20
PROJECT_SKILLS_DIR = "skills"
@@ -180,7 +180,7 @@ def get_project_skills_folder(project_name: str) -> Path:
180
def import_skills(
181
source_path: str,
182
*,
183
- dest_subdir: DestSubdir = "shared",
183
+ dest_subdir: DestSubdir = "custom",
184
namespace: Optional[str] = None,
185
conflict: ConflictPolicy = "skip",
186
dry_run: bool = False,
python/tools/skills_tool.py
+1
-1
@@ -74,7 +74,7 @@ class SkillsTool(Tool):
74
if not skills:
75
return (
76
"No skills found. Expected SKILL.md files under: "
77
- "usr/skills/{custom,builtin,shared} or project .a0proj/skills."
77
+ "usr/skills/{custom,default} or project .a0proj/skills."
78
)
79
80
# Stable output: sort by name
usr/skills/custom/.gitkeep
new
+1
@@ -0,0 +1 @@
1
+
usr/skills/default/api-development/SKILL.md
renamed
usr/skills/default/brainstorming/SKILL.md
renamed
usr/skills/default/code-review/SKILL.md
renamed
usr/skills/default/create-skill/SKILL.md
renamed
usr/skills/default/database-design/SKILL.md
renamed
usr/skills/default/debugging/SKILL.md
renamed
usr/skills/default/docker-devops/SKILL.md
renamed
usr/skills/default/git-workflow/SKILL.md
renamed
usr/skills/default/prompt-engineering/SKILL.md
renamed
usr/skills/default/security-audit/SKILL.md
renamed
usr/skills/default/tdd/SKILL.md
renamed
usr/skills/frameworks/agent-zero-dev/SKILL.md
+1
-1
@@ -53,7 +53,7 @@ Agent Zero Framework Architecture
53
│ ├── api/ # FastAPI endpoints (inherit from ApiHandler)
54
│ └── helpers/ # Utility functions and base classes
55
├── usr/skills/
56
-│ ├── builtin/ # Built-in skills (system)
56
+│ ├── default/ # Default skills (system)
57
│ ├── custom/ # User-created skills
58
│ └── frameworks/ # Multi-phase framework skills
59
├── agents/
usr/skills/frameworks/agent-zero-dev/a0dev-create-skill/SKILL.md
+1
-1
@@ -20,7 +20,7 @@ Skills are reusable instruction bundles that guide the agent through specific ta
20
21
```
22
usr/skills/
23
-├── builtin/ # System skills (don't modify)
23
+├── default/ # System skills (don't modify)
24
├── custom/ # Your skills go here
25
│ └── my-skill/
26
│ ├── SKILL.md # Required: Main skill file
usr/skills/frameworks/agent-zero-dev/a0dev-quickstart/SKILL.md
+1
-1
@@ -53,7 +53,7 @@ Agent Zero Framework
53
│ ├── api/ # FastAPI endpoints (inherit from ApiHandler)
54
│ └── helpers/ # Utility functions and base classes
55
├── usr/skills/
56
-│ ├── builtin/ # Built-in skills
56
+│ ├── default/ # Default skills
57
│ ├── custom/ # Your skills go here
58
│ └── frameworks/ # Multi-phase framework skills
59
├── agents/ # Subordinate profiles
usr/skills/frameworks/agent-zero-dev/docs/architecture.md
+1
-1
@@ -168,7 +168,7 @@ Skills follow the SKILL.md standard:
168
169
```
170
usr/skills/
171
-├── builtin/ # System skills (loaded first)
171
+├── default/ # System skills (loaded first)
172
├── custom/ # User-created skills
173
└── frameworks/ # Multi-phase framework skills
174
```
usr/skills/frameworks/agent-zero-dev/docs/quickstart.md
+1
-1
@@ -59,5 +59,5 @@ curl "http://localhost:5001/api/data_api?context=test¶m=value"
59
60
- Read the full [SKILL.md](../SKILL.md) for comprehensive documentation
61
- Explore existing tools in `/a0/python/tools/`
62
-- Check out built-in skills in `/a0/usr/skills/builtin/`
62
+- Check out default skills in `/a0/usr/skills/default/`
63
- Review the Superpowers framework for development workflows
usr/skills/shared/.gitkeep
webui/components/projects/project-edit-skills.html
+1
-1
@@ -36,7 +36,7 @@
36
<code x-text="'usr/projects/' + $store.projects.selectedProject.name + '/.a0proj/skills/'"></code>
37
</p>
38
<p class="skills-note">
39
- Use the global Settings > Skills tab for shared skills available to all projects.
39
+ Use the global Settings > Skills tab for custom skills available to all projects.
40
</p>
41
</div>
42
</div>
webui/components/settings/skills/import.html
-1
@@ -28,7 +28,6 @@
28
<span class="policy-label-text">Destination:</span>
29
<select x-model="$store.skillsImportStore.dest" class="policy-dropdown"
30
@change="$store.skillsImportStore.previewImport()">
31
- <option value="shared">Shared (recommended)</option>
31
<option value="custom">Custom</option>
32
<option value="project">Project</option>
33
</select>
webui/components/settings/skills/skills-import-store.js
+2
-2
@@ -16,7 +16,7 @@ const model = {
16
error: "",
17
18
skillsFile: null,
19
- dest: "shared", // shared|custom|project
19
+ dest: "custom", // custom|project
20
namespace: "",
21
conflict: "skip", // skip|overwrite|rename
22
projectName: "", // selected project name when dest is "project"
@@ -42,7 +42,7 @@ const model = {
42
this.resetState();
43
this.skillsFile = null;
44
this.namespace = "";
45
- this.dest = "shared";
45
+ this.dest = "custom";
46
this.conflict = "skip";
47
this.projectName = "";
48
},