Polish Start the dev server, open the feature in a browser, and iterate. You use the feature, say what feels off, and fixes happen. Phase 0: Get on the right branch 1. If a PR number or branch name was provided, check it out (probe for existing worktrees first). 2. If blank, use the current branch. 3. Verify the current branch is not main/master. Phase 1: Start the dev server 1.1 Check for Run . If it finds a configuration, use it — the user already told us how to start the project. 1.2 Auto-detect (when no launch.json) Run to identify the framework. Route by type to the matching recipe refer…

; then\n echo \"$local_port\"\n exit 0\n fi\n fi\n done\nfi\n\n# ── Probe 3: Rails config/puma.rb ───────────────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"puma\"; then\n puma_file=\"$PROJECT_ROOT/config/puma.rb\"\n if [ -f \"$puma_file\" ]; then\n puma_port=$(grep -Eo 'port[[:space:]]+[0-9]+' \"$puma_file\" 2>/dev/null | head -1 | grep -Eo '[0-9]+')\n if [ -n \"$puma_port\" ]; then\n echo \"$puma_port\"\n exit 0\n fi\n fi\nfi\n\n# ── Probe 4: Procfile.dev ───────────────────────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"procfile\"; then\n procfile=\"$PROJECT_ROOT/Procfile.dev\"\n if [ -f \"$procfile\" ]; then\n # Extract the web line\n web_line=$(grep -E '^web:' \"$procfile\" 2>/dev/null | head -1)\n if [ -n \"$web_line\" ]; then\n # Match -p \u003cn>, -p\u003cn>, --port \u003cn>, -p=\u003cn>, --port=\u003cn>\n proc_port=$(printf '%s' \"$web_line\" | grep -Eo '(-p[= ]*|--port[= ]+)[0-9]+' | head -1 | grep -Eo '[0-9]+')\n if [ -n \"$proc_port\" ]; then\n echo \"$proc_port\"\n exit 0\n fi\n fi\n fi\nfi\n\n# ── Probe 5: docker-compose.yml ─────────────────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"docker-compose\"; then\n compose_file=\"$PROJECT_ROOT/docker-compose.yml\"\n if [ -f \"$compose_file\" ]; then\n # Simple line-anchored grep for port mappings: - \"NNNN:NNNN\" or - NNNN:NNNN\n compose_port=$(grep -Eo '\"[0-9]+:[0-9]+\"' \"$compose_file\" 2>/dev/null | head -1 | grep -Eo '[0-9]+' | head -1)\n if [ -n \"$compose_port\" ]; then\n echo \"$compose_port\"\n exit 0\n fi\n fi\nfi\n\n# ── Probe 6: package.json scripts ───────────────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"package-json\"; then\n pkg_file=\"$PROJECT_ROOT/package.json\"\n if [ -f \"$pkg_file\" ]; then\n # Look for --port or -p in dev/start scripts\n pkg_port=$(grep -Eo '(-p[= ]+|--port[= ]+)[0-9]+' \"$pkg_file\" 2>/dev/null | head -1 | grep -Eo '[0-9]+')\n if [ -n \"$pkg_port\" ]; then\n echo \"$pkg_port\"\n exit 0\n fi\n fi\nfi\n\n# ── Probe 7: .env files ─────────────────────────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"env\"; then\n for envfile in \\\n \"$PROJECT_ROOT/.env.local\" \\\n \"$PROJECT_ROOT/.env.development\" \\\n \"$PROJECT_ROOT/.env\" \\\n ; do\n env_port=$(parse_env_port \"$envfile\")\n if [ -n \"$env_port\" ]; then\n echo \"$env_port\"\n exit 0\n fi\n done\nfi\n\n# ── Probe 8: Framework default lookup table ──────────────────────────────────\n\nif should_probe \"$PROJ_TYPE\" \"default\"; then\n case \"$PROJ_TYPE\" in\n rails|next|nuxt|remix|procfile|\"\")\n echo \"3000\"\n ;;\n vite|sveltekit)\n echo \"5173\"\n ;;\n astro)\n echo \"4321\"\n ;;\n *)\n echo \"3000\"\n ;;\n esac\n exit 0\nfi\n\n# Final fallback (should not normally be reached)\necho \"3000\"\nexit 0\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":10294,"content_sha256":"24a5bc3dc516ae00f28c79132aad2810dd6c1561e78a65686af09a3675c3454c"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Polish","type":"text"}]},{"type":"paragraph","content":[{"text":"Start the dev server, open the feature in a browser, and iterate. You use the feature, say what feels off, and fixes happen.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 0: Get on the right branch","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If a PR number or branch name was provided, check it out (probe for existing worktrees first).","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If blank, use the current branch.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Verify the current branch is not main/master.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 1: Start the dev server","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.1 Check for ","type":"text"},{"text":".claude/launch.json","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"bash scripts/read-launch-json.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":". If it finds a configuration, use it — the user already told us how to start the project.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.2 Auto-detect (when no launch.json)","type":"text"}]},{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"bash scripts/detect-project-type.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" to identify the framework.","type":"text"}]},{"type":"paragraph","content":[{"text":"Route by type to the matching recipe reference for start command and port defaults:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Type","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Recipe","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"rails","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-rails.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"next","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-next.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"vite","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-vite.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"nuxt","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-nuxt.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"astro","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-astro.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"remix","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-remix.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"sveltekit","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-sveltekit.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"procfile","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"references/dev-server-procfile.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"unknown","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ask the user how to start the project","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"For framework types that need a package manager, run ","type":"text"},{"text":"bash scripts/resolve-package-manager.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" and substitute the result into the start command.","type":"text"}]},{"type":"paragraph","content":[{"text":"Resolve the port with ","type":"text"},{"text":"bash scripts/resolve-port.sh --type \u003ctype>","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.3 Start the server","type":"text"}]},{"type":"paragraph","content":[{"text":"Start the dev server in the background, log output to a temp file. Probe ","type":"text"},{"text":"http://localhost:\u003cport>","type":"text","marks":[{"type":"code_inline"}]},{"text":" for up to 30 seconds. If it doesn't come up, show the last 20 lines of the log and ask the user what to do.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.4 Open in browser","type":"text"}]},{"type":"paragraph","content":[{"text":"Load ","type":"text"},{"text":"references/ide-detection.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" for the env-var probe table. Open the browser using the IDE's mechanism (Claude Code → ","type":"text"},{"text":"open","type":"text","marks":[{"type":"code_inline"}]},{"text":", Cursor → Cursor browser, VS Code → Simple Browser).","type":"text"}]},{"type":"paragraph","content":[{"text":"Tell the user:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"Dev server running on http://localhost:\u003cport>\nBrowse the feature and tell me what could be better.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 2: Iterate","type":"text"}]},{"type":"paragraph","content":[{"text":"This is the core loop. The user browses the feature and tells you what to improve. You fix it. Repeat until they're happy.","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"When the user describes something to fix → make the change, the dev server hot-reloads","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"When the user asks to check something → use ","type":"text"},{"text":"agent-browser","type":"text","marks":[{"type":"code_inline"}]},{"text":" to screenshot or inspect the page","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"When the user says they're done → commit the fixes and stop","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"No checklist. No envelope. Just conversation.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"References","type":"text"}]},{"type":"paragraph","content":[{"text":"Reference files (loaded on demand):","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/launch-json-schema.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — launch.json schema + per-framework stubs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/ide-detection.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — host IDE detection and browser-handoff","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-detection.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — port resolution documentation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-rails.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Rails dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-next.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Next.js dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-vite.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Vite dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-nuxt.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Nuxt dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-astro.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Astro dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-remix.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Remix dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-sveltekit.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — SvelteKit dev-server defaults","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/dev-server-procfile.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Procfile-based dev-server defaults","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Scripts (invoked via ","type":"text"},{"text":"bash scripts/\u003cname>","type":"text","marks":[{"type":"code_inline"}]},{"text":"):","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"scripts/read-launch-json.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" — launch.json reader","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"scripts/detect-project-type.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" — project-type classifier","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"scripts/resolve-package-manager.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" — lockfile-based package-manager resolver","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"scripts/resolve-port.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" — port resolution cascade","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"ce-polish-beta","author":"@skillopedia","source":{"stars":19041,"repo_name":"compound-engineering-plugin","origin_url":"https://github.com/everyinc/compound-engineering-plugin/blob/HEAD/plugins/compound-engineering/skills/ce-polish-beta/SKILL.md","repo_owner":"everyinc","body_sha256":"f8e70f4433a1f92b6a644b3ba49f23cdadc5ed33c8f75a3dd9d54a2107f8c5d6","cluster_key":"c58f5e677dd36964cd73a45ac20ba2e7f72a5ba0b88cb7593b80536ae0245b71","clean_bundle":{"format":"clean-skill-bundle-v1","source":"everyinc/compound-engineering-plugin/plugins/compound-engineering/skills/ce-polish-beta/SKILL.md","attachments":[{"id":"ce73a80f-ff5f-55e3-9986-12342c1464db","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ce73a80f-ff5f-55e3-9986-12342c1464db/attachment.md","path":"references/dev-server-astro.md","size":1856,"sha256":"db9d8648577b00e58d7e5c2c2fb704998a979b5fe9433a6b9d1f68aeca26ec2c","contentType":"text/markdown; charset=utf-8"},{"id":"08e80d66-03df-5ca1-a67e-9f287c5ae2ce","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/08e80d66-03df-5ca1-a67e-9f287c5ae2ce/attachment.md","path":"references/dev-server-detection.md","size":2910,"sha256":"a78b0eeeec7dc0599adcfccdb2fe051ce27165ae707102aa3b554d3250bcd490","contentType":"text/markdown; charset=utf-8"},{"id":"1a3652e5-92fe-568f-acf6-9581a5736bd3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1a3652e5-92fe-568f-acf6-9581a5736bd3/attachment.md","path":"references/dev-server-next.md","size":1872,"sha256":"2a31c55558a0c690b69cf8b2750d9bb34712fe62956e468afc7867d9cf0e06a7","contentType":"text/markdown; charset=utf-8"},{"id":"599d2903-b175-57b3-86f2-0485037ce998","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/599d2903-b175-57b3-86f2-0485037ce998/attachment.md","path":"references/dev-server-nuxt.md","size":1774,"sha256":"c9139317f1c7e86ae8cf86f484dd9098c1100025948365082730cd32a889e20b","contentType":"text/markdown; charset=utf-8"},{"id":"a80286c7-1368-5be7-a94b-6ea29b60f7c9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a80286c7-1368-5be7-a94b-6ea29b60f7c9/attachment.md","path":"references/dev-server-procfile.md","size":2353,"sha256":"97a21464364a4cdbd316bea61c5af144f81fe0d4671eb3e0e9aa8e9c6ff87919","contentType":"text/markdown; charset=utf-8"},{"id":"203c2df3-94e3-59d8-82a1-292fdb3f2658","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/203c2df3-94e3-59d8-82a1-292fdb3f2658/attachment.md","path":"references/dev-server-rails.md","size":1930,"sha256":"08fc52ffbb700ddfa2c19ab78608485b5aca8a88fcf46bed3280c699c42aaf2b","contentType":"text/markdown; charset=utf-8"},{"id":"55f2c955-dc7f-59da-afa1-027f42164b80","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/55f2c955-dc7f-59da-afa1-027f42164b80/attachment.md","path":"references/dev-server-remix.md","size":1995,"sha256":"4208c1b37881752799576d1188070b208357009b12d980a4184bb276f1be7ab0","contentType":"text/markdown; charset=utf-8"},{"id":"63e74be5-8984-5bb6-a282-e4317b0e258a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/63e74be5-8984-5bb6-a282-e4317b0e258a/attachment.md","path":"references/dev-server-sveltekit.md","size":2010,"sha256":"b4bee3d7e69660021aea8ed6716f70a6e2132ea298db568512f2891691db46d7","contentType":"text/markdown; charset=utf-8"},{"id":"108f58d6-bbc3-584f-8208-bf7c669d9044","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/108f58d6-bbc3-584f-8208-bf7c669d9044/attachment.md","path":"references/dev-server-vite.md","size":2230,"sha256":"513a43646ab4c8de3f94243b3af8e7742d3be1eb60e3b9d23dce1c62ffeee59f","contentType":"text/markdown; charset=utf-8"},{"id":"128bfb19-ac8c-5c1a-9bda-c9e452d6de26","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/128bfb19-ac8c-5c1a-9bda-c9e452d6de26/attachment.md","path":"references/ide-detection.md","size":2667,"sha256":"9d347f2264faa20ff2a494efd6da781939385e838d83e48502080d57cb12452b","contentType":"text/markdown; charset=utf-8"},{"id":"49e83fcb-d6cc-5fe2-b20d-fec3252e0b01","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/49e83fcb-d6cc-5fe2-b20d-fec3252e0b01/attachment.md","path":"references/launch-json-schema.md","size":4489,"sha256":"0200124e5c5c7cbf4f999b8b4cba0211fafc897fb860e4b39e981eedcf226f88","contentType":"text/markdown; charset=utf-8"},{"id":"04b63233-6fe8-5dd5-a92c-6344e10bb65a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/04b63233-6fe8-5dd5-a92c-6344e10bb65a/attachment.sh","path":"scripts/detect-project-type.sh","size":8127,"sha256":"1a2357d67d4ca5b25e6463e75993cba30859858c537666d39a72b92a35adc37f","contentType":"application/x-sh; charset=utf-8"},{"id":"a076ea0b-af80-57b2-b1da-7e982a8b1841","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a076ea0b-af80-57b2-b1da-7e982a8b1841/attachment.sh","path":"scripts/read-launch-json.sh","size":2897,"sha256":"58fe4d1dc2ca29d14bf57aea99e1c73e3cafdd117865dcf40fa6079727509bb2","contentType":"application/x-sh; charset=utf-8"},{"id":"92cd11c4-ae1c-5e22-93b0-ae0d8c74871c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/92cd11c4-ae1c-5e22-93b0-ae0d8c74871c/attachment.sh","path":"scripts/resolve-package-manager.sh","size":2673,"sha256":"9d9b1132fb8e4f68f79695ebe428501467be62e90a9779e02e287298db9b754f","contentType":"application/x-sh; charset=utf-8"},{"id":"ec00eb09-c4cf-5082-926c-55d0e7062cdc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ec00eb09-c4cf-5082-926c-55d0e7062cdc/attachment.sh","path":"scripts/resolve-port.sh","size":10294,"sha256":"24a5bc3dc516ae00f28c79132aad2810dd6c1561e78a65686af09a3675c3454c","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"5853e0944f6c86b956e81ff274ac4f88db6d8f9f53a36f1433a739226c938e33","attachment_count":15,"text_attachments":15,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"plugins/compound-engineering/skills/ce-polish-beta/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"browser-automation-scraping","category_label":"Browser"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"browser-automation-scraping","import_tag":"clean-skills-v1","description":"[BETA] Start the dev server, open the feature in a browser, and iterate on improvements together.","argument-hint":"[PR number, branch name, or blank for current branch]","disable-model-invocation":true}},"renderedAt":1782980916389}

Polish Start the dev server, open the feature in a browser, and iterate. You use the feature, say what feels off, and fixes happen. Phase 0: Get on the right branch 1. If a PR number or branch name was provided, check it out (probe for existing worktrees first). 2. If blank, use the current branch. 3. Verify the current branch is not main/master. Phase 1: Start the dev server 1.1 Check for Run . If it finds a configuration, use it — the user already told us how to start the project. 1.2 Auto-detect (when no launch.json) Run to identify the framework. Route by type to the matching recipe refer…