Standardize skill file naming from <software>_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 <noreply@anthropic.com>
## Changes
### 1. Display skill path in CLI header (repl_skin.py)
- Added `skill_path` parameter to ReplSkin class
- Banner now displays skill path when provided: `◇ Skill: skills/<software>_SKILL.md`
- This enables AI agents to discover where to read the skill documentation
### 2. Generate SKILL.md files for all 11 existing CLI harnesses
- anygen/agent-harness/skills/anygen_SKILL.md
- audacity/agent-harness/skills/audacity_SKILL.md
- blender/agent-harness/skills/blender_SKILL.md
- drawio/agent-harness/skills/drawio_SKILL.md
- gimp/agent-harness/skills/gimp_SKILL.md
- inkscape/agent-harness/skills/inkscape_SKILL.md
- kdenlive/agent-harness/skills/kdenlive_SKILL.md
- libreoffice/agent-harness/skills/libreoffice_SKILL.md
- obs-studio/agent-harness/skills/obs_studio_SKILL.md
- shotcut/agent-harness/skills/shotcut_SKILL.md
- zoom/agent-harness/skills/zoom_SKILL.md
### 3. Update HARNESS.md with skill path guidance
- Updated Phase 3 (REPL section) to show skill_path parameter usage
- Added "Display Skill Path in CLI Banner" section in Phase 6.5
### 4. Fix skill_generator.py syntax error
- Fixed list comprehension indentation on line 80-81
Addresses maintainer feedback from PR #47 comment:
- "displaying the skill path on the cli header so that agents can know where to read it"
- "generate skill.md files for all existing CLIs we have in the repo"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit resolves all 8 Copilot review comments:
Template fixes (SKILL.md.template):
- Fix#8: Use YAML block scalars for frontmatter to safely handle quotes/newlines
- Fix#2: Add conditional wrapper for command groups section to prevent empty headers
Generator fixes (skill_generator.py):
- Fix#6: Remove unused imports (os, json) and unused decorator_name variable
- Fix#5: Add cli_anything_dir.exists() check before iterdir() with descriptive error
- Fix#7: Add _format_display_name() helper for proper software name formatting
- Fix#4: Change output_path default to use harness_path instead of CWD
- Fix#3: Update regex patterns to handle multi-line decorators and docstrings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add skill_generator.py module for extracting CLI metadata
- Add templates/SKILL.md.template with Jinja2 placeholders
- Update HARNESS.md with Phase 6.5: SKILL.md Generation section
- Update cli-anything.md command to include skill generation step
- Update README.md to move SKILL.md generation to Features section
- SKILL.md follows skill-creator methodology with YAML frontmatter
- Generated files enable AI agents to discover and use CLIs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fixed 8 setup.py files that had placeholder URLs:
- Changed 'yourusername' to 'HKUDS'
- Changed repo name to 'CLI-Anything'
This fixes broken metadata when packages are published to PyPI.
find_libreoffice() previously only searched PATH, which misses the
default install location on Windows (Program Files\LibreOffice\program)
and macOS (/Applications/LibreOffice.app). Added platform-aware
fallback paths so the backend works out of the box after a standard
install.
get_version() called `soffice --version` without --headless, which
opens a GUI splash on Windows and hangs indefinitely. Now uses
`--headless --version` and gracefully falls back on timeout.
Tested on Windows with LibreOffice 26.2.1:
- 89 unit tests PASS
- 69 E2E tests PASS (including 13 real LibreOffice backend tests)
- PDF, DOCX, XLSX, PPTX, CSV all verified via magic bytes / OOXML
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add -s/--save flag to automatically save project after each mutation
command. This fixes the issue where one-shot commands don't persist
changes because each command runs in a new process with a fresh session.
Usage:
shotcut-cli --project edit.mlt -s timeline add-track --type video
# Now auto-saves after adding the track
Without -s flag, behavior is unchanged (explicit save required).
- Add --depth option to command signature
- Document options and update examples
- Clarify version is now shown for all tools
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously --depth 2 only scanned exactly 2 levels deep, missing
tools at depth 1. Now it scans all depths from 0 to N inclusive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add --depth option to limit how many directory levels to search
- depth=0 scans only current directory, depth=1 scans one level deep, etc.
- Default is unlimited depth (recursive ** glob)
- Helps control scan time in large directory structures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The setup.py file is in agent-harness/, not cli_anything/. Fixed the
path calculation to correctly extract version info.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements a full CLI harness that converts Draw.io (diagrams.net) into an
agent-callable API, following the CLI-Anything 7-phase pipeline pattern.
Features:
- XML-native manipulation of .drawio files (no GUI required)
- 15 shape presets (rectangle, ellipse, diamond, cylinder, cloud, etc.)
- 4 edge styles (straight, orthogonal, curved, entity-relation)
- Style property system (fill/stroke/font color, opacity, shadow, dashed, etc.)
- Multi-page diagram support
- Undo/redo with snapshot-based history (50 levels)
- Session persistence and auto-save in --project mode
- Interactive REPL mode with prompt-toolkit
- JSON output mode for AI agent consumption
- Export pipeline: XML direct + PNG/SVG/PDF via draw.io desktop CLI
- 138 tests passing (116 unit + 22 e2e), 3 skipped (require draw.io desktop)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add new command to list all available CLI-Anything tools.
Supports both installed and generated CLIs with table/JSON output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AnyGen spans slides, docs, diagrams, websites, and research reports via
cloud AI — it does not fit neatly into Creative & Media or any existing
category. Give it a dedicated row in the When to Use table.
Made-with: Cursor
Add a complete CLI harness for AnyGen (https://www.anygen.io), an AI-powered
content generation platform that produces slides, documents, websites, diagrams,
and more via a cloud REST API.
Built following the HARNESS.md methodology with the standard directory structure:
- anygen_backend.py wraps the full AnyGen OpenAPI (create/poll/download/upload/prepare)
- Click CLI with task, file, config, and session command groups
- Unified REPL interface via repl_skin.py
- 40 unit tests (mocked HTTP) + E2E tests (real API, verified PPTX download)
- File format verification for OOXML, PDF, PNG, SVG, drawio, JSON outputs
Also updates README.md (demos 8→9, tests 1298→1361) and .gitignore whitelist.
Made-with: Cursor