Product dev workflow
A flexible Claude Skill for the full product & software development lifecycle
npx -y skills add diablofong/product-dev-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Product Dev Workflow β a branch-per-task development assistant. Single slash command /pdw with seven sub-flows. Use /pdw alone to see the menu, or /pdw [sub] [args] for a specific flow. Sub-commands are init, talk, dev, hotfix, done, status. Also accepts natural language ("/pdw I want to build a login page") and auto-routes.
SKILL.md
15.5 KB, as published. Nobody here has run it
/pdw β Product Dev Workflow
A branch-per-task development workflow. One command covers the whole product lifecycle: discussion, development, hotfix, completion, status.
π Language Rule (applies to EVERYTHING below)
Always reply in the same language the user writes in. If the user writes Chinese, reply entirely in Chinese β translate all menus, prompts, confirmations, status messages, branch template section headers, and template placeholder labels. If the user writes English, reply entirely in English.
Only exceptions kept in English regardless: git commands, branch names, file paths, technical keywords (e.g. main, HEAD, PR, CURRENT.md).
Never mix languages unless the user does. The user's language is detected from their most recent message.
Argument Parsing
When the user types /pdw [args...], parse the first token:
| First token | Action |
|---|---|
| (empty) | Show the menu (see "Menu" section below) |
init | Run the Init flow |
talk (+ topic) | Run the Roundtable flow |
dev (+ task) | Run the Development flow |
hotfix (+ desc) | Run the Hotfix flow |
done (+ abandon?) | Run the Done flow |
status | Run the Status flow |
| Natural language description | Auto-route (see "Auto-Route" below) |
Auto-Route (natural language)
If the first token is not a recognized sub-command, treat the whole argument as a natural-language description and auto-decide:
| Description signals | Route to |
|---|---|
No .claude/records/ exists yet | Suggest init first |
| Discussion / market analysis / ideation / "should we" / no dev needed | talk |
| Urgent / P0 / production down / broken / "now" / "asap" | hotfix |
| Feature / bug / refactor / batch / "build" / "add" / "fix" | dev |
Tell the user which sub-flow you picked and why, then proceed. If unsure, ask.
Menu (shown when /pdw is typed with no args)
Display this menu in the user's language (translate headers, labels, and hints; keep command syntax in English):
π Product Dev Workflow β branch-per-task development
/pdw Show this menu
/pdw init Initialize this project (one-time, any project)
/pdw talk <topic> Roundtable discussion (no dev)
/pdw dev <task> Development β new branch / resume / bug / batch
/pdw hotfix <desc> Emergency fix (auto-pauses current branch)
/pdw done [abandon] Finish current work
/pdw status Show current state (focus / paused / queued)
You can also describe your need in plain language:
/pdw I want to add a login page
/pdw analyze the Taiwan backup software market
/pdw payment API is returning 500 in production
I will pick the right sub-flow for you.
Sub-Flow 1: init β Initialize Project
Model: π‘ Sonnet
Sets up .claude/records/ structure for any project β empty or already in progress. Runs once per project.
Pre-check
If .claude/records/ already exists β abort and tell the user to run /pdw status instead.
Detect Project Type
Run (or ask the user to run):
git branch --list
git branch --show-current
git log --oneline -1 2>/dev/null
git status --short
| Condition | Mode |
|---|---|
| No commits / no branches beyond main | π’ Fresh Mode |
| Has non-main branches or uncommitted work on a feature branch | π΅ Onboard Mode |
If ambiguous (only main with commits but no other branches), ask the user to choose.
π’ Fresh Mode
Create the structure without further questions:
.claude/records/
βββ CURRENT.md
βββ NOTES.md
βββ branches/
βββ archive/branches/
CURRENT.md template (translate labels to user's language):
# Current State
## Focus
(none)
## Paused
(none)
## Queued
(none)
## Version
current : v0.1
status : not-started
Offer to add .claude/ to .gitignore. Show a short success message in the user's language with suggested next steps (/pdw talk or /pdw dev).
π΅ Onboard Mode
For each non-main branch, ask the user (in their language):
- Branch type: feature / bugfix / hotfix / refactor / unsure
- One-line description of what this branch does
- Current progress: planning / design done / mid-implementation / nearly done
- Next action (one line β this is the resume point)
If the user can't remember a branch: offer "skip and mark as needs-review".
Classify into CURRENT.md:
- Current git branch β
Focus - Recent commits (β€7 days) β
Paused - Stale (>7 days no activity) β
Queuedwith a "stale?" marker
Show the proposed state and confirm before writing files.
Branch file (Snapshot Mode): Generate from the appropriate template (light/medium/heavy by type β see Sub-Flow 3 for templates). For unknown sections, insert a short placeholder note in the user's language indicating it was not backfilled during onboarding (e.g. *[not backfilled during onboarding]* or *[ζ₯ε
₯ζζͺεζΊ―]*).
Rules
- Read-only git queries only. Never run destructive git commands.
- Idempotent: second run aborts cleanly.
- Never force retroactive documentation.
Sub-Flow 2: talk β Roundtable Discussion
Model: π‘ Sonnet Purpose: Market analysis, ideation, competitive research, architecture discussion β no development required.
Before Starting
Prompt user to switch to Sonnet (in their language):
- Claude Code β
/model sonnet - Claude.ai β Click model name β Select Sonnet
Fixed Roles (always present)
- π Product Manager β requirements, priorities, alignment
- π Technical Architect β feasibility, architecture
- π€ End User β pain points, usability
Dynamic Roles (31 total β auto-select 2β4 by topic)
C-Suite: π CEO Β· π CTO Β· πΌ COO Β· π° CFO Β· π¨ CPO Β· π£ CMO Management: π Engineering Manager Β· π Data Lead Β· π CISO Β· π€ Partnership Manager Specialists: π¨ UX Designer Β· βοΈ Legal Β· π§ͺ QA Β· π Business Analyst Β· π Data Engineer Β· π¬ Data Scientist Β· π Security Engineer Β· π DevOps/SRE Β· π° Finance Β· π€ Customer Success Β· π― Growth Β· π€ Sales Β· π Localization Β· βΏ Accessibility Β· π± Mobile Engineer Β· π€ AI Engineer Β· π£ Marketing External: π’ Enterprise Client Β· π Competitor Analyst Β· π‘ Industry Advisor
Auto-Selection by Topic
| Topic | Auto-invite |
|---|---|
| New product | CEO, CPO, CMO, Marketing, Finance |
| Major version | CEO, CTO, CPO, Engineering Manager |
| Architecture | CTO, Engineering Manager, DevOps |
| Business model | CEO, CFO, CMO, Business Analyst |
| AI features | AI Engineer, CTO, Legal, Security |
| User data | CISO, Security, Legal, Data Engineer |
| Go-to-market | CEO, CMO, CPO, Sales, Marketing |
| Market research | Competitor Analyst, Industry Advisor, CMO |
| Mobile / App | Mobile Engineer, UX Designer, QA |
| B2B | CEO, Sales, Partnership, Enterprise Client |
| Internationalization | Localization, CMO, Legal |
| Security / compliance | CISO, Security Engineer, Legal |
Confirmation
Show proposed attendees and ask for confirmation (in user's language).
Output Format
All section labels in user's language:
π ROUNDTABLE SUMMARY
ββββββββββββββββββββββββββββββββ
Topic :
Attendees :
[Role] Perspective:
...
Consensus :
Action Items :
Open Questions :
ββββββββββββββββββββββββββββββββ
After output, ask:
- Save summary to
.claude/records/? - Start a development branch for any action item? (if yes, hand off to
devflow)
Sub-Flow 3: dev β Development
Model: π‘ Sonnet (π΄ Opus when stuck Β· π΅ Haiku for batch)
Decision Tree
/pdw dev [task?]
β
Focus branch in CURRENT.md?
YES + no new task β RESUME (show next step, continue)
YES + new task β ASK ("Pause current and start new, or add to current?")
NO β NEW BRANCH
Branch Classification (for NEW BRANCH)
| Signals | Type | Template | Model |
|---|---|---|---|
| rename / batch / list of β₯3 items | π΅ batch | Light | Haiku |
| bug / error / crash / broken | π‘ bugfix | Medium | Sonnet |
| refactor / cross-module / restructure | π’ refactor | Heavy | Sonnet/Opus |
| feature / add / build / new | π’ feature | Heavy | Sonnet |
Confirmation Before Creating
Show (in user's language):
π± New branch
name : feature/login-page
template : π’ heavy
model : π‘ Sonnet
git cmd : git checkout -b feature/login-page
Ask to proceed / adjust / cancel.
Branch Templates
When generating a branch file, translate all section headers to the user's language. Keep branch names, main, HEAD etc. in English.
π΄ Light (hotfix / simple bug / batch)
Type Β· Created Β· Base
Problem:
Fix:
Verification:
Tasks: [ ] Fix applied Β· [ ] Tested Β· [ ] Ready to merge
Pause Point:
next step :
π‘ Medium (bugfix)
Type Β· Created Β· Base
Symptoms:
Root Cause:
Solution:
Tasks: [ ] Implement fix Β· [ ] Regression test Β· [ ] Docs
Test Plan:
PR Description (draft):
Pause Point:
next step :
π’ Heavy (feature / refactor)
Type Β· Created Β· Base
Background & Goal:
Design:
Data / Schema:
API / Interfaces:
Flow / Sequence:
Task Breakdown:
- [ ] Task 1
- [ ] Task 2
Test Plan:
Risks & Open Questions:
PR Description (draft):
Pause Point:
paused at :
next step :
Notes:
Resuming
When focus branch exists and no new task is given, show (in user's language):
- Branch name
- Last pause point + next step
- Task progress (X of Y done, with next task marked)
- Ask: continue, or show full branch file?
Batch Mode (auto-triggered)
When classification β batch:
- Show execution plan, ask for confirmation
- Prompt Haiku switch
- Execute, report results
- Prompt switch back to Sonnet
Blocker
If stuck: prompt Opus switch. User can continue on Sonnet if they prefer.
During Development
If the user mentions a lesson learned, decision rationale, or gotcha β offer to save to NOTES.md.
Sub-Flow 4: hotfix β Emergency Interrupt
Model: π‘ Sonnet (π΄ Opus for mysterious bugs)
Step 1 β Auto-Pause Current Focus
If CURRENT.md has an active focus:
- Save pause point to the branch file:
paused at:β auto-detect from recent context if possiblenext step:β ask the user for one line (in their language) to serve as the resume point
- Move focus β paused in
CURRENT.md.
Step 2 β Open Hotfix Branch
git checkout -b hotfix/[short-desc]
Create branch file using the π΄ Light template (headers in user's language).
Step 3 β Assess and Fix
| Severity | Criteria | Approach |
|---|---|---|
| P0 | Production down / data loss | Fix immediately, minimal docs |
| Hard | Can't identify root cause | Prompt Opus switch |
| Standard | Clear cause | Normal light-template flow |
On Completion
When /pdw done closes this hotfix, offer to resume the paused focus branch. Show the saved next step. Ask in user's language.
Sub-Flow 5: done β Finish Current Work
Context-aware β auto-detects what "done" means based on current state.
Decision Tree
/pdw done [argument?]
β
arg = "abandon"? β ABANDON
Focus is a hotfix branch? β CLOSE HOTFIX + offer resume
All tasks on focus checked? β CLOSE BRANCH normally
Tasks remaining? β Ask: which task done, or close whole branch?
No focus + version's branches done? β Offer VERSION WRAP
No focus? β Show status, suggest /pdw dev
Close Branch (Normal)
Generate PR description from the branch file (in user's language). Confirm before archiving. Move branches/[name].md β archive/branches/[name].md. Clear focus in CURRENT.md. Show remaining queued branches or offer to resume paused.
Close Hotfix
Same as normal close, then offer to resume the paused focus branch with its saved next step.
Abandon
/pdw done abandon
Ask for optional reason. Archive with status: abandoned.
Version Wrap (auto-offered)
When the last active branch of a version closes, offer wrap. User confirms with wrap.
Retrospective flow (on wrap):
- Prompt Opus switch
- Run retrospective with sections (in user's language): Period Β· Branches completed Β· Branches abandoned Β· What went well Β· What didn't Β· Key learnings Β· Tech debt noted Β· Next version ideas
- Archive
CURRENT.mdsnapshot toarchive/, reset to empty template - Ask about planning the next version
Sub-Flow 6: status β Show Current State
Read CURRENT.md and display in the user's language:
π Current State β [datetime]
ββββββββββββββββββββββββββββββββ
π― Focus
[branch-name] (started X days ago)
Next: [next step]
Tasks: X of Y done
βΈ Paused (N)
[branch-name]
paused X days ago
next: "[resume instruction]"
π Queued (N)
[branch-name] β [note]
ββββββββββββββββββββββββββββββββ
Version: vX.x Β· N branches merged this version
If .claude/records/ does not exist: tell the user to run /pdw init first (in their language).
Occasionally show a context hygiene reminder:
- Share with Claude:
CURRENT.md+ active branch file only - Never share:
archive/, paused branch files,NOTES.md(unless needed)
Records Structure
project/
βββ src/ β your code
βββ .gitignore β .claude/ added automatically by /pdw init
βββ .claude/
βββ skills/ β skill files
βββ records/
βββ CURRENT.md β global state: focus / paused / queued
βββ NOTES.md β lessons learned, decisions, gotchas
βββ branches/ β one file per active or paused branch
βββ archive/
βββ branches/ β merged / abandoned branches
βββ vX.X-*.md β version snapshots
Model Quick Reference
π΄ Opus β New product planning, major version, retrospective, hard bugs, architecture
π‘ Sonnet β Roundtable, planning, development (main workhorse)
π΅ Haiku β Batch tasks (auto-triggered via dev flow)
How to Switch Models
- Claude Code:
/model opusΒ·/model sonnetΒ·/model haiku - Claude.ai: Click model name at top β select model
Quick Examples
/pdw β Show menu
/pdw init β Initialize this project
/pdw talk analyze Taiwan backup SaaS β Roundtable discussion
/pdw dev build a login page β Open feature branch + planning
/pdw hotfix payment API returns 500 β Auto-pause + open hotfix branch
/pdw done β Close current branch
/pdw status β Where am I?
/pdw I want to add OAuth login β Auto-routes to dev
/pdw production is on fire β Auto-routes to hotfix
/pdw should we enter the EU market β Auto-routes to talk