# Create Flp Project

> Create a new AI-first FL Studio song project from an FLP structural template. Use when asked to make a song, compose a new FLP, scaffold a music project, arrange patterns, or generate an original FL Studio project.

- Skill: `jihadkhawaja/create-flp-project` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jihadkhawaja/create-flp-project`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jihadkhawaja/create-flp-project/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jihadkhawaja (https://skillmd.com/u/jihadkhawaja)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jihadkhawaja/create-flp-project

---


# Create FLP Project

## Procedure

1. Read [the AI-first workflow](../../../docs/AI_FIRST_FLP_WORKFLOW.md).
2. Choose one execution mode for the task: MCP tools when the `music2daw` server is connected, otherwise the Music2DAW CLI. Use `music2daw` when the release bundle is installed; in a source checkout, use `dotnet run --project src/Music2Daw.Cli --` in its place.
3. Inspect the proposed structural template with MCP `inspect_flp` or CLI `music2daw inspect <template.flp>`; never assume channel, pattern, PPQ, playlist IDs, or plugin behavior. Review `pluginStateTextHints`, `isLikelySequenced`, and `sequenceRiskReason` for every instrument channel.
4. Create a dedicated folder under `projects/<song-slug>/` from `templates/flp-project/`.
5. Copy the structural FLP to `base-template.flp`. Never edit the original source or this local base in place.
6. Write `song-brief.yaml` before notes. Define title, concept, tempo, key, meter, sections, roles, and mix intent.
7. Write `edit-request.json` using zero-based IDs and project ticks. Replace every inherited note-bearing pattern/channel pair and replace the entire playlist so no prior composition remains.
8. Build with CLI:

   ```powershell
   music2daw edit <base-template.flp> <song.flp> <edit-request.json>
   ```

   Or call MCP `edit_flp` with the same source, output, and deserialized request content. Keep `edit-request.json` as the source of truth in either mode.
9. Inspect the output and export its MIDI/manifest bundle with the same mode. Verify tempo, names, note counts, playlist count, plugin initialization and parameter hashes, and source immutability.
10. In a source checkout, run `dotnet test`. Then launch the resulting FLP for an audible check.
11. Record assumptions, execution mode, and limitations in the song README.

## Composition Rules

- Compose original melodies and arrangements; do not imitate a named song or artist closely.
- Keep pitches in MIDI range 0-127, velocity 1-127, pan 0-127, and lengths positive.
- Derive bar length as `PPQ * 4` for 4/4; do not hardcode 384 unless PPQ is 96.
- Give each instrument one clear role and leave register space between bass, harmony, lead, and accents.
- Do not assign a likely sequenced preset to chords, bass, lead, or counter-melody unless its internal rhythm is an intentional part of the composition. Prefer a state with a pitched/static preset hint for written note lines.
- Use section-level contrast through density, register, rhythm, and orchestration.
- Preserve opaque plugin states unless deliberately copying an existing state to another channel.

