masslab-sii/desktop-analysis
Desktop analysis and reporting tools. Includes music analysis with popularity scoring and file statistics (count files, folders, and calculate total size).
npx skills add https://github.com/MassLab-SII/open-agent-skills --skill desktop-analysis
This skill provides data analysis and reporting tools:
./folder/file.txt or folder/file.txt).Analyzes music data from multiple artists, calculates popularity scores using a weighted formula, and generates a detailed analysis report.
popularity_score = (rating × W1) + (play_count_normalized × W2) + (year_factor × W3)| 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 |
# 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
Generate file statistics for a directory: total files, folders, and size.
python file_statistics.py .
Recursively list all files under a given directory path. Useful for quickly understanding project directory structure.
# List all files (excluding hidden)
python list_all_files.py .
# Include hidden files
python list_all_files.py ./data --include-hidden
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.
# Standard format
python run_fs_ops.py -c "await fs.read_text_file('./file.txt')"
read_text_file(path, head=None, tail=None)Use Cases:
Example:
python run_fs_ops.py -c "await fs.read_text_file('./data/file.txt')"
read_multiple_files(paths)Use Cases:
Example:
python run_fs_ops.py -c "await fs.read_multiple_files(['./a.txt', './b.txt'])"
write_file(path, content)Use Cases:
⚠️ Warning: Do NOT include triple backticks ( `) in the content, as this will break command parsing.
Example:
python run_fs_ops.py -c "await fs.write_file('./new.txt', 'Hello World')"
edit_file(path, edits)Use Cases:
Example:
python run_fs_ops.py -c "await fs.edit_file('./file.txt', [{'oldText': 'foo', 'newText': 'bar'}])"
create_directory(path)Use Cases:
Example:
python run_fs_ops.py -c "await fs.create_directory('./new/nested/dir')"
list_directory(path)Use Cases:
Example:
python run_fs_ops.py -c "await fs.list_directory('.')"
list_files(path=None, exclude_hidden=True)Use Cases:
Example:
python run_fs_ops.py -c "await fs.list_files('./data')"
move_file(source, destination)Use Cases:
Example:
python run_fs_ops.py -c "await fs.move_file('./old.txt', './new.txt')"
search_files(pattern, base_path=None)Use Cases:
Example:
python run_fs_ops.py -c "await fs.search_files('*.txt')"
get_file_info(path)Use Cases:
Example:
python run_fs_ops.py -c "await fs.get_file_info('./file.txt')"
get_file_size(path)Use Cases:
Example:
python run_fs_ops.py -c "await fs.get_file_size('./file.txt')"
get_file_ctime(path) / get_file_mtime(path)Use Cases:
Example:
python run_fs_ops.py -c "await fs.get_file_mtime('./file.txt')"
get_files_info_batch(filenames, base_path=None)Use Cases:
Example:
python run_fs_ops.py -c "await fs.get_files_info_batch(['a.txt', 'b.txt'], './data')"
Take masslab-sii/desktop-analysis from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.