The master entry point for album production. From concept design to release packaging — 6 Phases, fully automated.
All Phase input/output file paths, formats, and required fields are defined in FILE_CONTRACTS.md.
This is the pipeline's constitution. No expert or sub-agent may deviate.
- Read/write routes are strictly per contract (what to read, what to write, and what is forbidden)
- File formats are strictly per contract (block order, field validation, required fields)
- Any deviation = bug, must be fixed
The main agent's sole responsibility: Phase 1 Step 0 (concept exploration dialogue with the user).
All other work must be handled by independent sub-agents:
| Phase | # of Sub-agents | Notes |
|---|---|---|
| Phase 1 Step 1 | 4 | Creative Director / Market Expert / Music Director / Chief Reviewer (parallel 3 + serial 1) |
| Phase 2 per round | 5 | Lyrics / Arrangement / Rhyme / Market / Scoring Experts (serial) |
| Phase 3 | 1 | Lyrics standardization extractor |
| Phase 4.1 | 1 | 3-version Prompt generation |
| Phase 4.2 | 1 | Prompt review and optimization |
| Phase 4.3 | N | MiniMax CLI parallel generation (one agent per song per language) |
| Phase 5.1 | 1 | Listener selection (main agent coordinates with user) |
| Phase 5.2 | 1 | Quality verification |
| Phase 6.1–6.6 | 1 each | 6 independent packaging experts |
Each expert must be an independent sessions_spawn call — never merge them.
Lyrics Expert ≠ Arrangement Expert ≠ Market Expert ≠ Scoring Expert. Each is an independent sub-agent with its own SKILL.md, its own modification scope, and its own checklist.
Key mechanism: Feishu delivers messages in a batch after each turn ends.
Correct pattern (all Phases):
1. Main agent outputs prompt text (expected duration, next-step explanation)
2. Immediately spawn sub-agent
3. sessions_yield to end current turn → prompt is pushed to user
4. Sub-agent works in background
5. Sub-agent completes → main agent receives notification → proactively notifies user
Forbidden: spawning a sub-agent and then waiting without yielding (main agent stalls, user sees nothing).
Prompt timing principles:
- ✅ Only prompt at phase boundaries (Phase starts, Phase completes, user decision required)
- ❌ Do not pause for confirmation between rounds (Phase 2 internal multi-round rolling is automatic, no interruption)
- ✅ Only Phase 1 Step 0.1 (concept confirmation to start) and Phase 1 Step 3 (plan confirmation) require explicit user confirmation
- ✅ All other Phase starts only need a prompt with expected duration — no confirmation needed
- "Make an album"
- "album pipeline"
- "AI music album"
- User expresses intent to create a concept album
Phase 1: Album Concept → Album concept design (narrative arc + track positioning + tonal definition)
Phase 2: Song Writing → Song generation (5 experts serial × 3–6 rounds, N songs parallel)
Phase 3: Lyrics Formatter → Lyrics standardization (structure tags + character limits)
Phase 4: Music Generator → Music generation (MiniMax CLI multi-Take parallel)
Phase 5: Audio Transcoder → Selection + transcoding (320kbps/44.1kHz)
Phase 6: Album Packager → Release materials packaging (overview doc + cover + promo + artist story)
skills/album-pipeline/
├── SKILL.md ← This file (master entry point)
├── FILE_CONTRACTS.md ← Absolute file contracts
├── album-concept/ ← Phase 1
├── song-writer/ ← Phase 2 orchestrator
├── song-expert-lyrics/ ← Phase 2 lyrics expert
├── song-expert-arrangement/ ← Phase 2 arrangement expert
├── song-expert-rhyme/ ← Phase 2 rhyme expert
├── song-expert-market/ ← Phase 2 market expert
├── song-expert-scoring/ ← Phase 2 scoring expert
├── lyrics-formatter/ ← Phase 3 lyrics standardization
├── music-generator/ ← Phase 4 master entry (orchestrator)
├── audio-transcoder/ ← Phase 5 master entry (orchestrator)
├── album-packager/ ← Phase 6 master entry (orchestrator)
│
│ ── Phase 4 Sub-modules ──
├── phase4-prompt-generator/ ← Phase 4.1 3-version Prompt generation
├── phase4-prompt-reviewer/ ← Phase 4.2 Prompt review and optimization
├── phase4-music-executor/ ← Phase 4.3 MiniMax CLI parallel generation
│
│ ── Phase 5 Sub-modules ──
├── phase5-listener-selector/ ← Phase 5.1 listener selection
├── phase5-quality-verifier/ ← Phase 5.2 post-transcode quality verification
│
│ ── Phase 6 Sub-modules ──
├── phase6-album-overview-updater/ ← Phase 6.1 album overview update
├── phase6-promotional-writer/ ← Phase 6.2 promotional document
├── phase6-artist-story-writer/ ← Phase 6.3 artist story copy
├── phase6-cover-designer/ ← Phase 6.4 cover concept
├── phase6-platform-checker/ ← Phase 6.5 platform compliance check
└── phase6-packager/ ← Phase 6.6 final packaging
For each song (T1–TN, N = Phase 1 track count):
Open songs/TN-track-name.md (template initialized by Phase 0.5)
Round = 1 → up to 6 rounds:
spawn Lyrics Expert agent → read/write songs/TN-track-name.md
spawn Arrangement Expert agent → read/write songs/TN-track-name.md
spawn Rhyme Expert agent → read/write songs/TN-track-name.md
spawn Market Expert agent → read/write songs/TN-track-name.md
spawn Scoring Expert agent → read songs/TN-track-name.md, output score
↓
Score ≥ 80?
├─ Yes + Round ≥ 3 → ✅ Pass
└─ No → Flag low score → Round++
Key rules:
- Songs are parallel (N agent groups run simultaneously)
- Within a song, experts are serial (5 independent sub-agents operate on the same file in sequence)
- Each expert must be an independent
sessions_spawncall — never merge - Incremental modification (Round 2+ targets specific improvements based on previous round scores)
- Minimum 3 rounds (even if Round 1 scores 95, all 3 rounds must complete)
- Maximum 6 rounds
| Phase | Entry Condition | Exit Condition | Details |
|---|---|---|---|
| Phase 1 | User provides core theme | Track positioning table complete | album-concept/SKILL.md |
| Phase 2 | Phase 1 complete | All songs ≥ 80 score + completed 3 rounds (or max 6 rounds, take highest-scoring version) | song-writer/SKILL.md |
| Phase 3 | Phase 2 complete | All lyrics files pass validation | lyrics-formatter/SKILL.md |
| Phase 4 | Phase 3 complete | All Takes generated | music-generator/SKILL.md |
| Phase 5 | Phase 4 complete | Selected Take passes transcoding validation | audio-transcoder/SKILL.md |
| Phase 6 | Phase 5 complete | All release materials present | album-packager/SKILL.md |
All Phase input/output file paths, formats, and required fields are defined in FILE_CONTRACTS.md.
Each Skill must strictly follow the file contracts for its Phase and may not deviate.
| Reference | Path |
|---|---|
| Full pipeline retrospective | docs/production-pipeline-review.md |
| Example song | examples/songs/T1-Departure.md (98-point final draft) |
| Lyrics example | examples/lyrics/cn/T1-出发.txt (Chinese) / examples/lyrics/en/T1-Departure.txt (English) |
| MiniMax CLI | minimax music generate --help |
| Model duration | music-2.6 can generate 3–5 minutes of high-quality content; quality typically scales positively with duration (see tuning experiment data, TBD) |
| Lyrics length | ≤ 3,500 characters (excluding structure tag text) |
Core principle: even for a single instrumental track, the 6-Phase skeleton remains intact.
Instrumental only means skipping the lyrics-related expert steps — documentation is not skipped, file contracts are not skipped.
| Phase | Standard Operation | Instrumental Adjustment |
|---|---|---|
| Phase 1 | Concept design + track positioning | No change. Mark "Instrumental" in the track list's Language field |
| Phase 2 | 5 experts serial iteration | Lyrics Expert skips lyrics block, writes "Instrumental Description" block (emotional arc / timbre / arrangement); Rhyme Expert skips rhyme analysis, replaced with "Rhythm/Timbre × Arrangement Analysis"; Arrangement/Market/Scoring Experts unchanged |
| Phase 3 | Lyrics standardization | Output empty file + metadata.json with has_lyrics: false, validation.txt marked "Instrumental, skipped" |
| Phase 4 | 3-version Prompt + CLI generation | No --lyrics-file parameter; Prompt focuses on arrangement/timbre/emotional description |
| Phase 5 | Listener selection + transcoding + verification | No change |
| Phase 6 | Release materials packaging | No change. Artist story notes "this track is instrumental" |
For instrumental tracks, mark the Language field as "Instrumental" and add "🎵 Instrumental" in the status column:
| # | Track | Language | Status |
|---|---|---|---|
| 03 | T3《Interlude》 | Instrumental | 🎵 Instrumental |
Instrumental song file (songs/TN-track-name.md) structure:
- Basic info table: Language = Instrumental
- Lyrics block: Replaced with "Instrumental Description" block (section emotions / lead melody timbre / arrangement intent)
- English lyrics block: Removed or marked "Instrumental, none"
- Full arrangement design: Filled normally
- Key Sound Design: Filled normally
- Rhyme analysis: Replaced with "Rhythm/Timbre Analysis" block
- Cover highlight copy: Filled normally
- Market evaluation report: Filled normally
- Data: Filled normally (rhythm dimension replaced with "instrumental expressiveness" dimension)
- Score evolution history: Filled normally
When the album's Language field = "Instrumental" (all tracks are instrumental):
| Phase | Impact |
|---|---|
| Phase 3 | No .txt lyrics files generated in generate/lyrics/cn/ or generate/lyrics/en/; only metadata.json (each track marked has_lyrics: false) and validation.txt (all tracks marked "Instrumental, skipped") |
| Phase 4 | Prompts have no --lyrics-file parameter, focus on arrangement/timbre/emotional description; output directories generate/cn/ and generate/en/ still normally contain .mp3 files |
| Phase 5–6 | No change; normal transcoding, listening, packaging |
Directory allocation summary: Even if the entire album has no lyrics, the generate/lyrics/ directory must still be created (containing metadata.json + validation.txt), and generate/cn/ + generate/en/ directories still normally hold .mp3 outputs.
During Phase 1 concept design, if the user specifies a track as instrumental, mark it from Phase 1 onward. The Phase 2 orchestrator reads the track positioning table and automatically recognizes the "Instrumental" language field to adjust the expert workflow.
| Phase | Sub-module | Description |
|---|---|---|
| Phase 1 | album-concept/SKILL.md |
Concept design (4 experts + chief review) |
| Phase 2 | song-writer/SKILL.md |
Orchestrator |
| Phase 2 | song-expert-lyrics/SKILL.md |
Lyrics expert |
| Phase 2 | song-expert-arrangement/SKILL.md |
Arrangement expert |
| Phase 2 | song-expert-rhyme/SKILL.md |
Rhyme expert |
| Phase 2 | song-expert-market/SKILL.md |
Market expert |
| Phase 2 | song-expert-scoring/SKILL.md |
Scoring expert |
| Phase 3 | lyrics-formatter/SKILL.md |
Lyrics standardization + metadata + validation |
| Phase 4 | phase4-prompt-generator/SKILL.md |
3-version Prompt generation |
| Phase 4 | phase4-prompt-reviewer/SKILL.md |
Prompt review and optimization |
| Phase 4 | phase4-music-executor/SKILL.md |
MiniMax CLI parallel generation |
| Phase 5 | phase5-listener-selector/SKILL.md |
Listener selection |
| Phase 5 | phase5-quality-verifier/SKILL.md |
Post-transcode quality verification |
| Phase 6 | phase6-album-overview-updater/SKILL.md |
Album overview update |
| Phase 6 | phase6-promotional-writer/SKILL.md |
Promotional document |
| Phase 6 | phase6-artist-story-writer/SKILL.md |
Artist story copy |
| Phase 6 | phase6-cover-designer/SKILL.md |
Cover concept |
| Phase 6 | phase6-platform-checker/SKILL.md |
Platform compliance check |
| Phase 6 | phase6-packager/SKILL.md |
Final packaging |