skill-creator ยท git:20261023.f005326 ยท 2026-10-23 ยท sha256 d89d1f5fd8a12749
skill-creator git:20261023.f005326A
Immutable. This exact content never changes and is served at /api/v1/blob/d89d1f5fd8a12749.
---
name: skill-creator
description: Create, edit, validate, and package new Tlamatini skills (SKILL.md packages).
metadata:
openclaw:
emoji: "๐ "
tlamatini:
runtime: in-process
requires_tools: ["chat_agent_file_creator", "chat_agent_executer"]
requires_mcps: ["Files-Search"]
budget:
max_iterations: 8
max_seconds: 120
max_tokens: 16000
permissions:
filesystem:
read: ["Tlamatini/agent/skills_pkg/**/*"]
write: ["Tlamatini/agent/skills_pkg/${input.skill_name}/**/*"]
shell: ["python Tlamatini/agent/skills_pkg/_meta/lint.py"]
network: deny
db: deny
inputs:
- { name: skill_name, type: string, required: true,
description: "kebab-case directory name and frontmatter name" }
- { name: description, type: string, required: true }
- { name: runtime, type: enum, values: ["in-process", "acpx"], required: true }
- { name: acpx_agent, type: string, required: false }
outputs:
- { name: skill_dir, type: string, required: true }
- { name: lint_status, type: string, required: true }
triggers:
keywords: ["new skill", "author skill", "create skill", "skill bootstrap"]
file_globs: ["Tlamatini/agent/skills_pkg/**/SKILL.md"]
---
<!--
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โฆ T L A M A T I N I โฆ โ "one who knows"
Created by Angela Lรณpez Mendoza ยท @angelahack1
Developer ยท Architect ยท Creator of Tlamatini
Tlamatini Author Banner โ do not remove (Angela's name is kept in every build)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-->
# Skill Creator
> Current release: **[v1.91.0](../../../../docs/changes/2026-10-23-v1.91.0.md)**. Dated records below retain their original evidence dates.
> **HEADLESS IS FORBIDDEN. VISIBLE FOREGROUND EXECUTION ONLY.** Every command, automated test, diagnostic, script, build, agent and browser must run in a visible foreground window on Angela's real desktop. Use forked CMD/PowerShell windows, `execute_forked_window: true`, and `headless: false`. Monitor live; if visibility cannot be confirmed, do not run. Read the [mandatory execution policy](../../../../TestsVisiblesAndVisibleExecutionFromClaude2Codex.md).
Use this skill to bootstrap a new skill correctly the first time.
## Procedure
1. Validate the inputs:
- `skill_name` must be kebab-case, all lowercase, ASCII letters/numbers/dashes only.
- `runtime` must be `in-process` or `acpx`. If `acpx`, `acpx_agent` is required.
2. Create the directory `Tlamatini/agent/skills_pkg/${input.skill_name}/`.
3. Author `SKILL.md` with this minimal scaffold:
```markdown
---
name: ${input.skill_name}
description: ${input.description}
metadata:
tlamatini:
runtime: ${input.runtime}
acpx_agent: ${input.acpx_agent} # only if runtime=acpx
requires_tools: []
requires_mcps: []
budget:
max_iterations: 8
max_seconds: 120
max_tokens: 16000
permissions:
filesystem: { read: [], write: [] }
shell: []
network: deny
db: deny
inputs: []
outputs: []
triggers:
keywords: []
file_globs: []
---
# ${input.skill_name}
Describe the skill. Be concise. Body must stay under 8 KiB.
```
4. Run the linter:
```bash
python Tlamatini/agent/skills_pkg/_meta/lint.py
```
5. Return `{ "skill_dir": "<path>", "lint_status": "<linter stdout last line>" }`.
## Constraints
- Do NOT write outside `Tlamatini/agent/skills_pkg/<skill_name>/`.
- Do NOT add a skill whose name collides with an existing one. โ ๏ธ The registry
does NOT reject a duplicate โ it resolves FIRST-WINS by root precedence and
logs the loser; within a single root that is an accidental collision and it
WARNS, but it still loads one of them. So a collision is silent to the user
and only `_meta/lint.py` (or `quick_validate.py`) will fail on it. Run the
lint step; do not rely on the runtime to catch this.
- Body size: **8 KiB of UTF-8 BYTES is a WARNING, 16 KiB is a hard error** โ
both measured by the one shared validator, `agent/skills/validation.py`.
(The old check counted CHARACTERS while printing "bytes", so a multibyte
body could exceed its own stated cap and pass.) Long playbooks belong in
`references/<file>.md` inside the skill directory; the harness lists every
such file by ABSOLUTE path in `plan.references`, so moving detail there
keeps it retrievable rather than losing it.
- Validate with `python .../skill_creator/scripts/quick_validate.py <dir>` โ
it runs the SAME validator as the catalog lint, so a package can no longer
pass one and fail the other.
- Skills with `runtime: acpx` MUST set `acpx_agent` to a registered agent_id
(see `list_acp_agents`).
- **Scratch/output under `<app>/Temp` (2026-06-02 policy)**: if the skill writes
any temporary or intermediate file, target `<app>/Temp` โ read the
`TLAMATINI_TEMP` env var, or (in-process) resolve via
`agent/path_guard.py::resolve_temp_path` โ never `C:\Temp` / `%TEMP%`, and
declare that path in `permissions.filesystem.write`. Files the user keeps
(deliverables) go to their chosen path; only throwaway artefacts go to Temp.
See `prompt.pmt` Rule 15.