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&param=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 &gt; Skills tab for shared skills available to all projects.
39 + Use the global Settings &gt; 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 },