
Agent Asset Studio
Design routing hub skills with INDEX.csv, domain-prefixed naming, and consolidated assets so growing skill libraries stay cheap in context.
Install
npx skills add https://github.com/mols3131d/mols-agent-assets --skill agent-asset-studioWhat is this skill?
- Domain-prefix naming: verb, object, and place patterns for simple, complex, and hub skills
- Routing SKILL.md reads INDEX.csv and delegates—no heavy workflows in the router itself
- Cost optimization by consolidating scripts/assets under one master router
- Place-token hubs: studio, console, hub, portal, workspace naming convention
- Terse reference for routing-skill structure alongside agent asset organization
Adoption & trust: 1 installs on skills.sh; trending (+100% hot-view momentum).
Recommended Skills
Find Skillsvercel-labs/skills
Skill Creatoranthropics/skills
Lark Skill Makerlarksuite/cli
Skills Clixixu-me/skills
Write A Skillmattpocock/skills
Using Superpowersobra/superpowers
Journey fit
Primary fit
Agent-tooling is where solo builders assemble skills, routers, and shared scripts before relying on them across the journey. Canonical shelf for structuring skill packages, routers, and asset layout—not a single app feature.
SKILL.md
READMESKILL.md - Agent Asset Studio
# Naming Convention ## 1. Domain Prefixing - **Purpose**: Categorization/tagging (since folders are not always nested). - **Rule**: Place 1-2 domain tokens at the front. - **Sub-skill Rule**: If nested under a parent skill, omit domain tokens already clear from the parent skill name. - **Example**: `openspec-apply-change.md`, `agent-asset-studio.md` ## 2. Naming Types by Skill Complexity | Type | Target Skill | Format | Example | | --- | --- | --- | --- | | **Verb** | Simple skill (single action) | `<domain>-<verb>-<details>.md` | `coder-generate-code.md` | | **Object** | Complex skill (multi-action object) | `<domain>-<object>.md` | `task-manager.md` | | **Place** | Routing/Hub skill (consolidates capabilities) | `<domain>-<details>-<place>.md` | `reviewer-console.md` | *Note: `<place>` must be a location-based word (e.g., `studio`, `console`, `hub`, `portal`, `workspace`).* # Routing Skill Structure Terse reference for designing and structuring routing skills. ## 1. Purpose - **Efficient Indexing**: Resolves the inefficiency of scanning numerous separate skill directories as capabilities expand. - **Cost Optimization**: Consolidates common scripts and assets under one master router, minimizing context size and inference overhead. ## 2. Core Components ### `SKILL.md` (The Router) - Acts as the primary entry point. - Does NOT contain the actual execution workflows for individual tasks. - Guides the agent to read `INDEX.csv` and route the user's request to the appropriate sub-skill. ### `INDEX.csv` (The Registry) - A lightweight index containing minimal data needed for the LLM to make an accurate routing decision. - Format: `name,overview,keywords,trigger,exclusion` - The agent reads this first to locate the target sub-skill without loading all sub-skill instructions into context. ## 3. Sub-Skill Organization Routing skills allow two layouts for their children within the `sub-skills/` directory: 1. **Flat Markdown** (For simple tasks) - Path: `sub-skills/<skill-name>.md` - Ideal for concise, single-file instructions. 2. **Nested Directory** (For complex tasks or migrated skills) - Path: `sub-skills/<skill-name>/SKILL.md` - Used when migrating an existing skill to preserve its isolated assets, references, or folder structure. from . import agent, rule, skill __all__ = [ "skill", "rule", "agent", ] from typing import Final from core.schema import FrontmatterSchema from .common import ( ALLOWED_RESOURCES, COMMON_DESCRIPTION_FIELD, COMMON_NAME_FIELD, DEFAULT_AGENT_DESCRIPTION, ) DEFAULT_DESCRIPTION: Final[str] = DEFAULT_AGENT_DESCRIPTION # Configuration for Agent Validation FRONTMATTER_SCHEMA: Final[FrontmatterSchema] = FrontmatterSchema([ COMMON_NAME_FIELD, COMMON_DESCRIPTION_FIELD, ]) import re from typing import Final from core.schema import FrontmatterField ALLOWED_RESOURCES: Final[set[str]] = { "scripts", "references", "assets", "prompts", "configs", "sub-skills", } NAME_PATTERN: Final[re.Pattern[str]] = re.compile(r"^[a-z0-9]+(?:-[a-z0-9]+)*$") COMMON_NAME_FIELD: Final[FrontmatterField] = FrontmatterField( "name", is_required=True, max_length=64, regex_pattern=r"^[a-z0-9]+(?:-[a-z0-9]+)*$", regex_message="name은 소문자 영문, 숫자, 단일 하이픈만 사용할 수 있습니다.", ) COMMON_DESCRIPTION_FIELD: Final[FrontmatterField] = FrontmatterField( "description", is_required=True, max_length=1024, ) DEFAULT_AGENT_DESCRIPTION: Final[str] = ( "TODO: Describe the persona, goal, and responsibilities of this agent. Use to " "instantiate specialized sub-agents or define main orchestrators." ) DEFAULT_RULE_DESCRIPTION: Final[str] = ( "TODO: Describe what this rule restricts, enforces, or guides. Use when the agent " "needs to adhere to specific protocols, coding styles, or behavior limits." ) DEFAULT_SKILL_DESCRIPTION: Final[str] = ( "TODO: Describe what this skill does and when to use it. Use when the user