Start a new project. Deep questioning, research, requirements, and roadmap.
Initiates new projects through deep questioning, research, requirements scoping, and roadmap generation.
npx claudepluginhub sienklogic/towlineThis skill is limited to using the following tools:
templates/PROJECT.md.tmpltemplates/REQUIREMENTS.md.tmpltemplates/STATE.md.tmpltemplates/config.json.tmpltemplates/researcher-prompt.md.tmpltemplates/roadmap-prompt.md.tmpltemplates/synthesis-prompt.md.tmplYou are the orchestrator for /dev:begin. This skill initializes a new Towline project through deep questioning, optional research, requirements scoping, and roadmap generation. Your job is to stay lean — delegate heavy work to Task() subagents and keep the user's main context window clean.
Reference: skills/shared/context-budget.md for the universal orchestrator rules.
Additionally for this skill:
.planning/ directory (or user confirms overwrite)Execute these steps in order. Each step specifies whether it runs inline (in your context) or is delegated to a subagent.
Check if the current directory has existing code:
1. Run: ls to check directory contents
2. Look for indicators of existing code:
- package.json, requirements.txt, CMakeLists.txt, go.mod, Cargo.toml
- src/, lib/, app/ directories
- .git/ directory with commits
3. Check if .planning/ already exists
If existing code found:
Use the yes-no pattern from skills/shared/gate-prompts.md:
question: "This looks like an existing codebase. Run /dev:scan to analyze what's here first?"
options:
- label: "Yes, scan" description: "Run /dev:scan first to analyze existing code"
- label: "No, begin" description: "Proceed with /dev:begin on top of existing code"
/dev:scan and stopIf .planning/ already exists:
Use the yes-no pattern from skills/shared/gate-prompts.md:
question: "A .planning/ directory already exists. This will overwrite it. Continue?"
options:
- label: "Yes" description: "Overwrite existing planning directory"
- label: "No" description: "Cancel — keep existing planning"
Reference: Read references/questioning.md for technique details.
Have a natural conversation to understand the user's vision. Do NOT present a form or checklist. Instead, have a flowing conversation that covers these areas organically:
Required context to gather:
Conversation approach:
Keep going until you have:
Anti-patterns:
After understanding the project, configure the Towline workflow. Use AskUserQuestion for each preference below. Present them sequentially with conversational bridging (e.g., "Great. Next...") to keep the flow natural.
3a. Mode:
Use the toggle-confirm pattern from skills/shared/gate-prompts.md:
question: "How do you want to work?"
header: "Mode"
options:
- label: "Interactive" description: "Pause at key gates for your approval (default)"
- label: "Autonomous" description: "Auto-proceed, only stop for critical decisions"
interactive (default) — confirm at gates (roadmap, plans, transitions)autonomous — auto-proceed, only stop for critical decisions3b. Depth:
Use the depth-select pattern from skills/shared/gate-prompts.md:
question: "How thorough should planning be?"
quick — 3-5 phases, skip research, ~50% cheaperstandard (default) — 5-8 phases, includes researchcomprehensive — 8-12 phases, full deep research, ~2x cost3c. Parallelization:
Use the toggle-confirm pattern from skills/shared/gate-prompts.md:
question: "Run multiple agents in parallel when plans are independent?"
header: "Parallel"
options:
- label: "Enable" description: "Parallel execution of independent plans (default)"
- label: "Disable" description: "Sequential execution only"
enabled (default) — parallel execution of independent plansdisabled — sequential execution3d. Git Branching:
Use the git-strategy-select pattern from skills/shared/gate-prompts.md:
question: "Git branching strategy?"
none (default) — commit to current branchphase — create branch per phasemilestone — create branch per milestone3e. Commit Planning Docs:
Use the yes-no pattern from skills/shared/gate-prompts.md:
question: "Should planning documents (.planning/ directory) be committed to git?"
options:
- label: "Yes" description: "Commit planning docs (default)"
- label: "No" description: "Add .planning/ to .gitignore"
yes (default) — commit planning docsno — add .planning/ to .gitignoreAfter gathering preferences:
skills/begin/templates/config.json.tmpl.planning/ directory.planning/config.json with the user's preferencesIMPORTANT: This step MUST happen BEFORE research (Step 5) because depth controls how many researchers to spawn.
Based on the depth setting from Step 3, determine the research approach:
Depth-to-Discovery mapping:
| Depth | Discovery Level | Researchers | Topics |
|---|---|---|---|
| quick | Level 0 | 0 | Skip research entirely |
| standard | Level 1 | 2 | STACK.md, FEATURES.md |
| standard + brownfield | Level 2 | 2-3 | STACK.md, FEATURES.md, + codebase mapping |
| comprehensive | Level 3 | 4 | STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md |
If depth is quick:
If depth is standard or comprehensive:
Use the yes-no pattern from skills/shared/gate-prompts.md:
question: "I'd like to research the technology landscape before planning. This helps create better plans. Proceed with research?"
options:
- label: "Yes" description: "Run research agents (recommended for standard/comprehensive)"
- label: "No" description: "Skip research, move straight to requirements"
Spawn parallel Task() subagents for research. Each researcher writes to .planning/research/.
Create .planning/research/ directory first.
For each research topic, spawn a Task():
Task({
subagent_type: "dev:towline-researcher",
prompt: <see researcher prompt template below>
})
NOTE: The dev:towline-researcher subagent type auto-loads the agent definition from agents/towline-researcher.md. Do NOT inline the agent definition — it wastes main context.
For each researcher, construct the prompt by reading the template and filling in placeholders:
Read skills/begin/templates/researcher-prompt.md.tmpl for the prompt structure.
Placeholders to fill:
{project name from questioning} — project name gathered in Step 2{2-3 sentence description from questioning} — project description from Step 2{any locked technology choices} — technology constraints from Step 2{budget, timeline, skill level, etc.} — user constraints from Step 2{topic} — the research topic being assigned (e.g., "Technology Stack Analysis"){TOPIC} — the output filename (e.g., STACK, FEATURES, ARCHITECTURE, PITFALLS){topic-specific questions} — see topic-specific questions belowTopic-specific questions:
STACK.md (Level 1+):
FEATURES.md (Level 1+):
ARCHITECTURE.md (Level 3 only):
PITFALLS.md (Level 3 only):
Parallelization:
run_in_background: true for each researcher◐ Spawning {N} researchers in parallel...TaskOutput with block: false for each agent and report statusAfter all researchers complete, display to the user: ◐ Spawning synthesizer...
Spawn a synthesis agent:
Task({
subagent_type: "dev:towline-synthesizer",
model: "haiku",
prompt: <synthesis prompt>
})
NOTE: The dev:towline-synthesizer subagent type auto-loads the agent definition. Do NOT inline it. Use model: "haiku" — synthesis is fast summarization work that doesn't need a large model.
Read skills/begin/templates/synthesis-prompt.md.tmpl for the prompt structure.
Placeholders to fill:
{List all .planning/research/*.md files that were created} — list the research files produced in Step 5Present research findings (if any) and interactively scope requirements with the user.
7a. Present findings:
If research was done, read .planning/research/SUMMARY.md and present key findings:
7b. Feature identification: From the questioning session, list all features and capabilities discussed. Group them into categories.
Example categories: Auth, UI, API, Data, Infrastructure, Testing, etc.
7c. Scope each category: For each category, present the features and ask the user to classify each:
7d. Assign REQ-IDs:
For each committed requirement, assign an ID in the format {CATEGORY}-{NN}:
AUTH-01: User can log in with Discord OAuthAUTH-02: Protected routes redirect to loginUI-01: Dashboard shows player statisticsUI-02: Mobile-responsive layoutEach requirement must be:
7e. Write REQUIREMENTS.md:
Read the template from skills/begin/templates/REQUIREMENTS.md.tmpl and write .planning/REQUIREMENTS.md with:
Display to the user: ◐ Spawning planner (roadmap)...
Spawn the towline-planner in roadmap mode:
Task({
subagent_type: "dev:towline-planner",
prompt: <roadmap prompt>
})
NOTE: The dev:towline-planner subagent type auto-loads the agent definition. Do NOT inline it. The planner agent will read REQUIREMENTS.md and SUMMARY.md from disk — you only need to tell it what to do and where files are.
Read skills/begin/templates/roadmap-prompt.md.tmpl for the prompt structure.
Placeholders to fill:
{project name} — project name from Step 2{description} — project description from Step 2{quick|standard|comprehensive} — depth setting from Step 3After the planner completes:
.planning/ROADMAP.mdgates.confirm_roadmap is true in config, use the approve-revise-abort pattern from skills/shared/gate-prompts.md:
question: "Approve this roadmap?"
options:
Write the project state files from templates:
9a. Write PROJECT.md:
skills/begin/templates/PROJECT.md.tmpl{project_name} — from questioning{2-3 sentences} — project description from questioning{ONE sentence} — core value statement.planning/PROJECT.md## Milestones section is filled in with the project name and phase count from the roadmap9b. Write STATE.md:
skills/begin/templates/STATE.md.tmpl{date} — today's date{total} — total phase count from roadmap{Phase 1 name} — from roadmap.planning/STATE.md## Milestone section with the project name and total phase countskills/shared/state-update.md (150 lines max).9c. Write CONTEXT.md:
Create .planning/CONTEXT.md from information gathered during questioning:
# Project Context
## Locked Decisions
{Technology choices, architecture decisions, and constraints that are NON-NEGOTIABLE}
| Decision | Rationale | Locked By |
|----------|-----------|-----------|
| {e.g., "Use TypeScript"} | {User preference, team skill} | User |
## User Constraints
{Budget, timeline, skill level, hosting, team size}
## Deferred Ideas
{Features explicitly moved to v2 or out-of-scope}
| Idea | Reason Deferred |
|------|----------------|
| {feature} | {reason} |
9d. Create phase directories: For each phase in the roadmap, create the directory structure:
.planning/phases/01-{slug}/
.planning/phases/02-{slug}/
...
Where {slug} is the phase name in kebab-case (e.g., project-setup, authentication).
Reference: skills/shared/commit-planning-docs.md for the standard commit pattern.
10a. Gitignore:
If planning.commit_docs is false in config:
.planning/ to .gitignoreIf planning.commit_docs is true:
.planning/research/ to .gitignore (research is always excluded — it's reference material, not project state)10b. Initial commit (if desired):
If gates.confirm_project is true in config:
skills/shared/gate-prompts.md:
question: "Everything look good? Commit the planning docs?"
options:
planning.commit_docs is true:
.planning/ files (excluding research/ if gitignored)chore: initialize towline project planningAfter all steps complete, present the final summary:
Use the branded stage banner from references/ui-formatting.md:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TOWLINE ► PROJECT INITIALIZED ✓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
**{name}**
{core value one-liner}
Roadmap: {N} phases
1. {Phase 1 name}
2. {Phase 2 name}
...
Requirements: {N} committed, {M} deferred, {K} out-of-scope
Then use the "Next Up" routing block:
───────────────────────────────────────────────────────────────
## ▶ Next Up
**Phase 1: {Name}** — {one-line goal}
`/dev:explore`
<sub>`/clear` first → fresh context window</sub>
───────────────────────────────────────────────────────────────
**Also available:**
- `/dev:discuss 1` — talk through Phase 1 details before planning
- `/dev:plan 1` — jump straight to planning Phase 1
- `/dev:config` — adjust workflow settings
───────────────────────────────────────────────────────────────
If a researcher Task() fails or times out:
⚠ Research on {topic} failed. Proceeding without it. You can re-research during /dev:plan.If user says they want to start over mid-flow:
If .planning/ directory can't be created, display:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
Cannot create .planning/ directory.
**To fix:** Check directory permissions or specify an alternative path.
| File | Purpose | When |
|---|---|---|
.planning/config.json | Workflow configuration | Step 3 |
.planning/research/*.md | Research documents | Step 5 (if research enabled) |
.planning/research/SUMMARY.md | Research synthesis | Step 6 (if research enabled) |
.planning/REQUIREMENTS.md | Scoped requirements | Step 7 |
.planning/ROADMAP.md | Phase roadmap | Step 8 |
.planning/PROJECT.md | Project overview | Step 9 |
.planning/STATE.md | Current state tracker | Step 9 |
.planning/CONTEXT.md | Decisions and constraints | Step 9 |
.planning/phases/NN-*/ | Phase directories | Step 9 |
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.