Skip to content
Back to skills

Import Track

ASecurity

Moves track markdown files to the correct album location. Use when the user has track files in Downloads or other locations that need to be placed in an album.

  • 497 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
developmentgobash

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add bitwize-music-studio/claude-ai-music-skills --skill import-track --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Import Track?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Import Track
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bitwize-music-studio-import-track/badge)](https://www.skillsdirectory.com/skills/bitwize-music-studio-import-track)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: import-track
description: Moves track markdown files to the correct album location. Use when the user has track files in Downloads or other locations that need to be placed in an album.
argument-hint: <file-path> <album-name> [track-number]
model: claude-haiku-4-5-20251001
allowed-tools:
  - Read
  - Bash
  - Glob
---

## Your Task

**Input**: $ARGUMENTS

Import a track markdown file (.md) to the correct album location based on config.

---

# Import Track Skill

You move track markdown files to the correct location in the user's content directory.

## Step 1: Parse Arguments

Expected format: `<file-path> <album-name> [track-number]`

Examples:
- `~/Downloads/track.md sample-album 03`
- `~/Downloads/t-day-beach.md sample-album 03`
- `~/Downloads/03-t-day-beach.md sample-album` (number already in filename)

If arguments are missing, ask:
```
Usage: /import-track <file-path> <album-name> [track-number]

Example: /import-track ~/Downloads/track.md sample-album 03
```

## Step 2: Read Config (REQUIRED)

**ALWAYS read the config file first. Never skip this step.**

```bash
cat ~/.bitwize-music/config.yaml
```

Extract:
- `paths.content_root` → The base content directory
- `artist.name` → The artist name (e.g., "bitwize")

## Step 3: Find Album and Determine Genre

Search for the album directory using the Glob tool to find its genre:

```
Glob: {content_root}/artists/{artist}/albums/*/{album-name}/README.md
```

The genre is extracted from the path: `albums/{genre}/{album-name}/README.md`

If album not found, list available albums:

```
Glob: {content_root}/artists/{artist}/albums/*/*/README.md
```

If no match:
```
Error: Album "{album-name}" not found.

Available albums:
[list album directory names from glob results]

Create album first with: /new-album {album-name} <genre>
```

## Step 4: Construct Target Path

The target path is **ALWAYS**:

```
{content_root}/artists/{artist}/albums/{genre}/{album}/tracks/{XX}-{track-name}.md
```

Example with:
- `content_root: ~/bitwize-music`
- `artist: bitwize`
- `genre: electronic` (found from album location)
- `album: sample-album`
- `track-number: 03`
- `track-name: t-day-beach`

Result:
```
~/bitwize-music/artists/bitwize/albums/electronic/sample-album/tracks/03-t-day-beach.md
```

**Track numbering**:
- If track number provided, use it (zero-padded: `03`)
- If filename already has number prefix (e.g., `03-name.md`), preserve it
- If neither, ask user for track number

## Step 5: Move File

```bash
mv "{source_file}" "{target_path}"
```

## Step 6: Confirm

Report:
```
Moved: {source_file}
   To: {target_path}
```

## Error Handling

**Source file doesn't exist:**
```
Error: File not found: {source_file}
```

**Config file missing:**
```
Error: Config not found at ~/.bitwize-music/config.yaml
Run /configure to set up.
```

**Album not found:**
```
Error: Album "{album-name}" not found.
Create it first with: /new-album {album-name} <genre>
```

**Track already exists:**
```
Warning: Track already exists at destination.
Overwrite? (The original was not moved)
```

---

## Examples

```
/import-track ~/Downloads/t-day-beach.md sample-album 03
```

Config has:
```yaml
paths:
  content_root: ~/bitwize-music
artist:
  name: bitwize
```

Album found at: `~/bitwize-music/artists/bitwize/albums/electronic/sample-album/`

Result:
```
Moved: ~/Downloads/t-day-beach.md
   To: ~/bitwize-music/artists/bitwize/albums/electronic/sample-album/tracks/03-t-day-beach.md
```

---

## Common Mistakes

### ❌ Don't: Skip reading config

**Wrong:**
```bash
# Assuming content_root path
mv track.md ~/music-projects/artists/bitwize/albums/...
```

**Right:**
```bash
# Always read config first
cat ~/.bitwize-music/config.yaml
# Use paths.content_root and artist.name from config
```

### ❌ Don't: Search from wrong location

**Wrong:**
```bash
# Searching from current directory
find . -name "README.md" -path "*albums/$album_name*"
```

**Right:**
```
# Use Glob tool from content_root
Glob: {content_root}/artists/{artist}/albums/*/{album_name}/README.md
```

**Why it matters:** Album might not be in current working directory. Always use the Glob tool (not `find` or `ls`) to search for files.

### ❌ Don't: Forget the tracks/ subdirectory

**Wrong destination:**
```
{album_path}/01-track.md
# Example: ~/bitwize-music/artists/bitwize/albums/electronic/sample-album/01-track.md
```

**Correct destination:**
```
{album_path}/tracks/01-track.md
# Example: ~/bitwize-music/artists/bitwize/albums/electronic/sample-album/tracks/01-track.md
```

**Why it matters:** Tracks always go in the `tracks/` subdirectory within the album folder.

### ❌ Don't: Use hardcoded artist name

**Wrong:**
```
# Assuming artist is bitwize
Glob: ~/music-projects/artists/bitwize/albums/*/*/README.md
```

**Right:**
```
# Read artist.name from config first, then use it
Glob: {content_root}/artists/{artist}/albums/*/*/README.md
```

### ❌ Don't: Skip track number validation

**Wrong:**
```bash
# Not validating track number format
mv track.md {album_path}/tracks/$track_num-track.md
# Could result in: 3-track.md instead of 03-track.md
```

**Right:**
```bash
# Ensure zero-padding
track_num=$(printf "%02d" $track_num)
mv track.md {album_path}/tracks/$track_num-track.md
# Results in: 03-track.md
```

**Why it matters:** Track numbers must be zero-padded (01, 02, 03...) for proper sorting.

### ❌ Don't: Assume album location without searching

**Wrong:**
```bash
# Guessing album is in electronic genre
mv track.md ~/music-projects/artists/bitwize/albums/electronic/sample-album/tracks/
```

**Right:**
```
# Search for album across all genres using Glob
Glob: {content_root}/artists/{artist}/albums/*/{album_name}/README.md
# Album might be in hip-hop, electronic, folk, etc.
```

**Why it matters:** Albums are organized by genre. You need to find the album first, not assume its genre.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.