Agent skill

desktop-analysis

Desktop analysis and reporting tools. Includes music analysis with popularity scoring and file statistics (count files, folders, and calculate total size).

Stars 146
Forks 6

Install this agent skill to your Project

npx add-skill https://github.com/MassLab-SII/open-agent-skills/tree/main/portable-skills/desktop_analysis

SKILL.md

Desktop Analysis Skill

This skill provides data analysis and reporting tools:

  1. Music analysis: Generate popularity reports from music data
  2. File statistics: Count files, folders, and calculate total size
  3. List all files: Recursively list all files under a directory

Important Notes

  • Do not use other bash commands: Do not attempt to use general bash commands or shell operations like cat, ls.
  • Use relative paths: Use paths relative to the working directory (e.g., ./folder/file.txt or folder/file.txt).

I. Skills

1. Music Analysis Report

Analyzes music data from multiple artists, calculates popularity scores using a weighted formula, and generates a detailed analysis report.

Features

  • Reads song data from multiple artist directories
  • Supports CSV and TXT file formats
  • Calculates popularity scores using configurable weights:
    • popularity_score = (rating × W1) + (play_count_normalized × W2) + (year_factor × W3)
    • Default weights: W1=0.4, W2=0.4, W3=0.2
  • Sorts songs by popularity

Parameters

Parameter Default Description
--output music_analysis_report.txt Output report filename
--rating-weight 0.4 Weight for rating score
--play-count-weight 0.4 Weight for normalized play count
--year-weight 0.2 Weight for year factor

Example

bash
# Generate music analysis report with default weights (0.4, 0.4, 0.2)
python music_report.py ./music

# Use a custom output filename
python music_report.py ./music --output my_report.txt

# Use custom weights for the popularity formula
python music_report.py ./music --rating-weight 0.5 --play-count-weight 0.3 --year-weight 0.2

2. File Statistics

Generate file statistics for a directory: total files, folders, and size.

Features

  • Count total files (excluding .DS_Store)
  • Count total folders
  • Calculate total size in bytes (includes .DS_Store for size only)

Example

bash
python file_statistics.py .

3. List All Files

Recursively list all files under a given directory path. Useful for quickly understanding project directory structure.

Features

  • Recursively traverse all subdirectories
  • Option to exclude hidden files (like .DS_Store)
  • Output one file path per line, including both path and filename (relative to input directory)

Example

bash
# List all files (excluding hidden)
python list_all_files.py .

# Include hidden files
python list_all_files.py ./data --include-hidden

II. Basic Tools (FileSystemTools)

Below are the basic tool functions. These are atomic operations for flexible combination.

Prefer Skills over Basic Tools: When a task matches one of the Skills above, use the corresponding Skill instead of Basic Tools. Skills are more efficient because they can perform batch operations in a single call.

Prefer List All Files over list_directory/list_files: When you need to list files in a directory, prefer using the list_all_files.py skill instead of list_directory or list_files basic tools. The skill provides recursive listing with better output formatting.

Note: Code should be written without line breaks.

How to Run

bash
# Standard format
python run_fs_ops.py -c "await fs.read_text_file('./file.txt')"

File Reading Tools

read_text_file(path, head=None, tail=None)

Use Cases:

  • Read complete file contents
  • Read first N lines (head) or last N lines (tail)

Example:

bash
python run_fs_ops.py -c "await fs.read_text_file('./data/file.txt')"

read_multiple_files(paths)

Use Cases:

  • Read multiple files simultaneously

Example:

bash
python run_fs_ops.py -c "await fs.read_multiple_files(['./a.txt', './b.txt'])"

File Writing Tools

write_file(path, content)

Use Cases:

  • Create new files with short, simple content only
  • Overwrite existing files

⚠️ Warning: Do NOT include triple backticks (```) in the content, as this will break command parsing.

Example:

bash
python run_fs_ops.py -c "await fs.write_file('./new.txt', 'Hello World')"

edit_file(path, edits)

Use Cases:

  • Make line-based edits to existing files

Example:

bash
python run_fs_ops.py -c "await fs.edit_file('./file.txt', [{'oldText': 'foo', 'newText': 'bar'}])"

Directory Tools

create_directory(path)

Use Cases:

  • Create new directories (supports recursive creation)

Example:

bash
python run_fs_ops.py -c "await fs.create_directory('./new/nested/dir')"

list_directory(path)

Use Cases:

  • List all files and directories in a path

Example:

bash
python run_fs_ops.py -c "await fs.list_directory('.')"

list_files(path=None, exclude_hidden=True)

Use Cases:

  • List only files in a directory

Example:

bash
python run_fs_ops.py -c "await fs.list_files('./data')"

File Operations

move_file(source, destination)

Use Cases:

  • Move or rename files/directories

Example:

bash
python run_fs_ops.py -c "await fs.move_file('./old.txt', './new.txt')"

search_files(pattern, base_path=None)

Use Cases:

  • Search for files matching a glob pattern

Example:

bash
python run_fs_ops.py -c "await fs.search_files('*.txt')"

File Information

get_file_info(path)

Use Cases:

  • Get detailed metadata (size, created, modified, etc.)

Example:

bash
python run_fs_ops.py -c "await fs.get_file_info('./file.txt')"

get_file_size(path)

Use Cases:

  • Get file size in bytes

Example:

bash
python run_fs_ops.py -c "await fs.get_file_size('./file.txt')"

get_file_ctime(path) / get_file_mtime(path)

Use Cases:

  • Get file creation/modification time

Example:

bash
python run_fs_ops.py -c "await fs.get_file_mtime('./file.txt')"

get_files_info_batch(filenames, base_path=None)

Use Cases:

  • Get file information for multiple files in parallel

Example:

bash
python run_fs_ops.py -c "await fs.get_files_info_batch(['a.txt', 'b.txt'], './data')"

Didn't find tool you were looking for?

Be as detailed as possible for better results