From f73833d15a457dddfbf06482a0064c3287435818 Mon Sep 17 00:00:00 2001 From: yuhao Date: Mon, 16 Mar 2026 08:39:51 +0000 Subject: [PATCH] refactor: rename skill files to SKILL.md, drop software prefix from filename Standardize skill file naming from _SKILL.md to SKILL.md across all 11 harnesses. Update skill_generator.py, HARNESS.md, repl_skin.py, cli-anything.md, and plugin README.md to reference the new path. Add SKILL.md generation section to main README.md and mark roadmap item done. Co-Authored-By: Claude Opus 4.6 --- README.md | 14 +++++++++++++- .../skills/{anygen_SKILL.md => SKILL.md} | 0 .../skills/{audacity_SKILL.md => SKILL.md} | 0 .../skills/{blender_SKILL.md => SKILL.md} | 0 cli-anything-plugin/HARNESS.md | 12 ++++++------ cli-anything-plugin/README.md | 4 ++-- cli-anything-plugin/commands/cli-anything.md | 2 +- cli-anything-plugin/repl_skin.py | 2 +- cli-anything-plugin/skill_generator.py | 4 ++-- .../skills/{drawio_SKILL.md => SKILL.md} | 0 .../skills/{gimp_SKILL.md => SKILL.md} | 0 .../skills/{inkscape_SKILL.md => SKILL.md} | 0 .../skills/{kdenlive_SKILL.md => SKILL.md} | 0 .../skills/{libreoffice_SKILL.md => SKILL.md} | 0 .../skills/{obs_studio_SKILL.md => SKILL.md} | 0 .../skills/{shotcut_SKILL.md => SKILL.md} | 0 .../skills/{zoom_SKILL.md => SKILL.md} | 0 17 files changed, 25 insertions(+), 13 deletions(-) rename anygen/agent-harness/skills/{anygen_SKILL.md => SKILL.md} (100%) rename audacity/agent-harness/skills/{audacity_SKILL.md => SKILL.md} (100%) rename blender/agent-harness/skills/{blender_SKILL.md => SKILL.md} (100%) rename drawio/agent-harness/skills/{drawio_SKILL.md => SKILL.md} (100%) rename gimp/agent-harness/skills/{gimp_SKILL.md => SKILL.md} (100%) rename inkscape/agent-harness/skills/{inkscape_SKILL.md => SKILL.md} (100%) rename kdenlive/agent-harness/skills/{kdenlive_SKILL.md => SKILL.md} (100%) rename libreoffice/agent-harness/skills/{libreoffice_SKILL.md => SKILL.md} (100%) rename obs-studio/agent-harness/skills/{obs_studio_SKILL.md => SKILL.md} (100%) rename shotcut/agent-harness/skills/{shotcut_SKILL.md => SKILL.md} (100%) rename zoom/agent-harness/skills/{zoom_SKILL.md => SKILL.md} (100%) diff --git a/README.md b/README.md index 4df34e014..9008f57d9 100644 --- a/README.md +++ b/README.md @@ -368,6 +368,18 @@ All CLIs organized under cli_anything.* namespace — conflict-free, pip-install +### 🤖 SKILL.md Generation + +Each generated CLI includes a `SKILL.md` file at `/agent-harness/skills/SKILL.md` — a self-contained skill definition that enables AI agents to discover and use the CLI through Claude Code's skill system or other agent frameworks. + +**What SKILL.md provides:** +- **YAML frontmatter** with name and description for agent skill discovery +- **Command groups** with all available subcommands documented +- **Usage examples** for common workflows +- **Agent-specific guidance** for JSON output, error handling, and programmatic use + +SKILL.md files are auto-generated during Phase 6.5 of the pipeline using `skill_generator.py`, which extracts metadata directly from the CLI's Click decorators, setup.py, and README. + --- ## 🎬 Demonstrations @@ -744,7 +756,7 @@ We welcome contributions! CLI-Anything is designed to be extensible: - [ ] Community-contributed CLI harnesses for internal/custom software - [ ] Integration with additional agent frameworks beyond Claude Code - [ ] Support packaging APIs for closed-source software and web services into CLIs -- [ ] Produce SKILL.md alongside the CLI for agent skill discovery and orchestration +- [x] Produce SKILL.md alongside the CLI for agent skill discovery and orchestration --- diff --git a/anygen/agent-harness/skills/anygen_SKILL.md b/anygen/agent-harness/skills/SKILL.md similarity index 100% rename from anygen/agent-harness/skills/anygen_SKILL.md rename to anygen/agent-harness/skills/SKILL.md diff --git a/audacity/agent-harness/skills/audacity_SKILL.md b/audacity/agent-harness/skills/SKILL.md similarity index 100% rename from audacity/agent-harness/skills/audacity_SKILL.md rename to audacity/agent-harness/skills/SKILL.md diff --git a/blender/agent-harness/skills/blender_SKILL.md b/blender/agent-harness/skills/SKILL.md similarity index 100% rename from blender/agent-harness/skills/blender_SKILL.md rename to blender/agent-harness/skills/SKILL.md diff --git a/cli-anything-plugin/HARNESS.md b/cli-anything-plugin/HARNESS.md index 9de518b81..158b5088c 100644 --- a/cli-anything-plugin/HARNESS.md +++ b/cli-anything-plugin/HARNESS.md @@ -74,7 +74,7 @@ designed for humans, without needing a display or mouse. ```python from cli_anything..utils.repl_skin import ReplSkin - skin = ReplSkin("", version="1.0.0", skill_path="skills/_SKILL.md") + skin = ReplSkin("", version="1.0.0", skill_path="skills/SKILL.md") skin.print_banner() # Branded startup box (includes skill path for agents) pt_session = skin.create_prompt_session() # prompt_toolkit with history + styling line = skin.get_input(pt_session, project_name="my_project", modified=True) @@ -260,7 +260,7 @@ definition that can be loaded by Claude Code or other AI assistants. skill_path = generate_skill_file( harness_path="/path/to/agent-harness", - output_path="skills/_SKILL.md" + output_path="skills/SKILL.md" ) ``` @@ -282,14 +282,14 @@ By default, SKILL.md files are generated in the `skills/` directory: / └── agent-harness/ └── skills/ - └── _SKILL.md + └── SKILL.md ``` **Manual Generation:** ```bash cd cli-anything-plugin -python skill_generator.py /path/to/software/agent-harness -o skills/software_SKILL.md +python skill_generator.py /path/to/software/agent-harness -o skills/SKILL.md ``` **Integration with CLI Build:** @@ -316,8 +316,8 @@ documentation when using the CLI: # In the REPL initialization (e.g., shotcut_cli.py) from cli_anything..utils.repl_skin import ReplSkin -skin = ReplSkin("", version="1.0.0", skill_path="skills/_SKILL.md") -skin.print_banner() # Now displays: ◇ Skill: skills/_SKILL.md +skin = ReplSkin("", version="1.0.0", skill_path="skills/SKILL.md") +skin.print_banner() # Now displays: ◇ Skill: skills/SKILL.md ``` This enables agents to know exactly where to find the skill definition when they diff --git a/cli-anything-plugin/README.md b/cli-anything-plugin/README.md index 1d19351fc..233c8c73b 100644 --- a/cli-anything-plugin/README.md +++ b/cli-anything-plugin/README.md @@ -216,7 +216,7 @@ Generate AI-discoverable skill definition: - Extract CLI metadata using `skill_generator.py` - Generate SKILL.md with YAML frontmatter (name, description) - Include command groups, examples, and agent-specific guidance -- Output to `skills/_SKILL.md` +- Output to `skills/SKILL.md` **Output:** SKILL.md file for AI agent discovery @@ -239,7 +239,7 @@ Package and install: ├── .md # Software-specific SOP ├── setup.py # PyPI config (find_namespace_packages) ├── skills/ # Generated skill definitions - │ └── _SKILL.md # AI-discoverable skill file + │ └── SKILL.md # AI-discoverable skill file └── cli_anything/ # Namespace package (NO __init__.py) └── / # Sub-package (HAS __init__.py) ├── README.md # Installation and usage diff --git a/cli-anything-plugin/commands/cli-anything.md b/cli-anything-plugin/commands/cli-anything.md index d907bd54a..a0772d12c 100644 --- a/cli-anything-plugin/commands/cli-anything.md +++ b/cli-anything-plugin/commands/cli-anything.md @@ -73,7 +73,7 @@ This command implements the complete cli-anything methodology to build a product - Extracts CLI metadata using `skill_generator.py` - Generates SKILL.md with YAML frontmatter and Markdown body - Includes command groups, examples, and agent-specific guidance -- Outputs to `skills/_SKILL.md` by default +- Outputs to `skills/SKILL.md` by default - Makes the CLI discoverable and usable by AI agents ### Phase 7: PyPI Publishing and Installation diff --git a/cli-anything-plugin/repl_skin.py b/cli-anything-plugin/repl_skin.py index c279b581d..7a245e9f5 100644 --- a/cli-anything-plugin/repl_skin.py +++ b/cli-anything-plugin/repl_skin.py @@ -6,7 +6,7 @@ Copy this file into your CLI package at: Usage: from cli_anything..utils.repl_skin import ReplSkin - skin = ReplSkin("shotcut", version="1.0.0", skill_path="skills/shotcut_SKILL.md") + skin = ReplSkin("shotcut", version="1.0.0", skill_path="skills/SKILL.md") skin.print_banner() prompt_text = skin.prompt(project_name="my_video.mlt", modified=True) skin.success("Project saved") diff --git a/cli-anything-plugin/skill_generator.py b/cli-anything-plugin/skill_generator.py index 115da5027..a15705578 100644 --- a/cli-anything-plugin/skill_generator.py +++ b/cli-anything-plugin/skill_generator.py @@ -481,7 +481,7 @@ def generate_skill_file(harness_path: str, output_path: Optional[str] = None, if output_path is None: # Default to skills/ directory under harness_path harness_path_obj = Path(harness_path) - output_path = harness_path_obj / "skills" / f"{metadata.software_name}_SKILL.md" + output_path = harness_path_obj / "skills" / "SKILL.md" else: output_path = Path(output_path) @@ -507,7 +507,7 @@ if __name__ == "__main__": ) parser.add_argument( "-o", "--output", - help="Output path for SKILL.md (default: skills/_SKILL.md)", + help="Output path for SKILL.md (default: skills/SKILL.md)", default=None ) parser.add_argument( diff --git a/drawio/agent-harness/skills/drawio_SKILL.md b/drawio/agent-harness/skills/SKILL.md similarity index 100% rename from drawio/agent-harness/skills/drawio_SKILL.md rename to drawio/agent-harness/skills/SKILL.md diff --git a/gimp/agent-harness/skills/gimp_SKILL.md b/gimp/agent-harness/skills/SKILL.md similarity index 100% rename from gimp/agent-harness/skills/gimp_SKILL.md rename to gimp/agent-harness/skills/SKILL.md diff --git a/inkscape/agent-harness/skills/inkscape_SKILL.md b/inkscape/agent-harness/skills/SKILL.md similarity index 100% rename from inkscape/agent-harness/skills/inkscape_SKILL.md rename to inkscape/agent-harness/skills/SKILL.md diff --git a/kdenlive/agent-harness/skills/kdenlive_SKILL.md b/kdenlive/agent-harness/skills/SKILL.md similarity index 100% rename from kdenlive/agent-harness/skills/kdenlive_SKILL.md rename to kdenlive/agent-harness/skills/SKILL.md diff --git a/libreoffice/agent-harness/skills/libreoffice_SKILL.md b/libreoffice/agent-harness/skills/SKILL.md similarity index 100% rename from libreoffice/agent-harness/skills/libreoffice_SKILL.md rename to libreoffice/agent-harness/skills/SKILL.md diff --git a/obs-studio/agent-harness/skills/obs_studio_SKILL.md b/obs-studio/agent-harness/skills/SKILL.md similarity index 100% rename from obs-studio/agent-harness/skills/obs_studio_SKILL.md rename to obs-studio/agent-harness/skills/SKILL.md diff --git a/shotcut/agent-harness/skills/shotcut_SKILL.md b/shotcut/agent-harness/skills/SKILL.md similarity index 100% rename from shotcut/agent-harness/skills/shotcut_SKILL.md rename to shotcut/agent-harness/skills/SKILL.md diff --git a/zoom/agent-harness/skills/zoom_SKILL.md b/zoom/agent-harness/skills/SKILL.md similarity index 100% rename from zoom/agent-harness/skills/zoom_SKILL.md rename to zoom/agent-harness/skills/SKILL.md