skill-creator ยท git:20261022.8c577d3 ยท 2026-10-22 ยท sha256 29d12a5037c1d0ab

skill-creator git:20261022.8c577d3A

Immutable. This exact content never changes and is served at /api/v1/blob/29d12a5037c1d0ab.

---
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.90.0](../../../../docs/changes/2026-10-22-v1.90.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.