diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 617d32a..bc11a78 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,13 +5,13 @@ "email": "rukais2294@gmail.com" }, "metadata": { - "description": "AI-native Vibe Coding โ€” From idea to Deploy, Zero friction. Unified plugin with 12 agents, 5 commands, 4 skills, team-based parallel build, 20 design styles, screen-spec generator.", + "description": "AI-native Vibe Coding โ€” From idea to Deploy, Zero friction. Unified plugin with 13 agents, 5 commands, 5 skills, team-based parallel build, 20 design styles, screen-spec generator.", "version": "2.1.0" }, "plugins": [ { "name": "wigtn-coding", - "description": "Unified AI-native Vibe Coding plugin: PRD generation, digging analysis, screen-spec (IA / User Flow / Wireframe HTML / Dev Handoff), team-based parallel implementation, quality-gated auto-commit, 20 design styles, frontend (React/Next.js), backend (NestJS/Prisma), mobile (React Native/Expo), AI integration (STT/LLM), DevOps (Docker/CI-CD). 12 agents, 5 commands, 4 skills.", + "description": "Unified AI-native Vibe Coding plugin: PRD generation, digging analysis, screen-spec (IA / User Flow / Wireframe HTML / Dev Handoff), team-based parallel implementation, quality-gated auto-commit, 20 design styles, frontend (React/Next.js), backend (NestJS/Prisma), mobile (React Native/Expo), AI integration (STT/LLM), DevOps (Docker/CI-CD). 13 agents, 5 commands, 5 skills.", "source": "./plugins/wigtn-coding", "version": "2.1.0", "author": { diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..ef2de71 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,44 @@ +name: ๐Ÿž Bug report +description: ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ธฐ๋Œ€๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ๋•Œ / Report a bug in the plugin +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + ๋ฒ„๊ทธ๋ฅผ ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์žฌํ˜„ ๋‹จ๊ณ„๊ฐ€ ๊ตฌ์ฒด์ ์ผ์ˆ˜๋ก ๋นจ๋ฆฌ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + - type: input + id: component + attributes: + label: ์˜ํ–ฅ ๋ฐ›๋Š” ๋ถ€๋ถ„ / Affected part + description: ์–ด๋–ค command / agent / skill ์ธ๊ฐ€์š”? + placeholder: "/screen-spec, code-reviewer, handdrawn-diagram, โ€ฆ" + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋‚˜์š”? / What happened? + description: ๊ธฐ๋Œ€ํ•œ ๋™์ž‘ vs ์‹ค์ œ ๋™์ž‘ + placeholder: | + ๊ธฐ๋Œ€: โ€ฆ + ์‹ค์ œ: โ€ฆ + validations: + required: true + - type: textarea + id: repro + attributes: + label: ์žฌํ˜„ ๋‹จ๊ณ„ / Steps to reproduce + placeholder: | + 1. `/prd โ€ฆ` + 2. `/screen-spec โ€ฆ` + 3. โ€ฆ + validations: + required: true + - type: textarea + id: env + attributes: + label: ํ™˜๊ฒฝ / Environment + description: Claude Code ๋ฒ„์ „, OS, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „ + placeholder: "Claude Code x.y, macOS 15, wigtn-coding 2.1.0" + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..2661706 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,2 @@ +# Discussions are not enabled on this repo; general questions go through blank issues. +blank_issues_enabled: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..5d0e1b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,36 @@ +name: ๐Ÿ’ก Feature request +description: ์ƒˆ agent / command / skill ๋˜๋Š” ๊ฐœ์„  ์ œ์•ˆ / Propose a new capability +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์‹ถ๋‚˜์š”? / What problem does this solve? + description: ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์›Œํฌํ”Œ๋กœ์šฐ/๋ถˆํŽธ์„ ๋จผ์ € ์ ์–ด์ฃผ์„ธ์š” (ํ•ด๊ฒฐ์ฑ…๋ณด๋‹ค ๋ฌธ์ œ ๋จผ์ €). + validations: + required: true + - type: dropdown + id: kind + attributes: + label: ์ข…๋ฅ˜ / Kind + options: + - New skill + - New command + - New agent + - Improve existing + - Other + validations: + required: true + - type: textarea + id: proposal + attributes: + label: ์ œ์•ˆ / Proposed solution + description: ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋ฉด ์ข‹์„์ง€. ํŠธ๋ฆฌ๊ฑฐ ์˜ˆ์‹œ(`/...`)๊ฐ€ ์žˆ์œผ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. + validations: + required: false + - type: textarea + id: alternatives + attributes: + label: ๋Œ€์•ˆ / Alternatives considered + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..85371e9 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ + + +## Summary + + + +## Changes + +- + +## Type + +- [ ] `feat` โ€” new agent / command / skill / capability +- [ ] `fix` โ€” bug fix +- [ ] `docs` โ€” documentation only +- [ ] `refactor` / `chore` + +## Checklist + +- [ ] ์ƒˆ agent/command/skill์„ `plugin.json`์— ๋“ฑ๋กํ–ˆ๋‹ค (ํ•ด๋‹น ์‹œ) +- [ ] ์นด์šดํŠธ๋ฅผ ๋ชจ๋‘ ๋™๊ธฐํ™”ํ–ˆ๋‹ค โ€” `plugin.json`, `marketplace.json`, `README.{md,ko,cn}` ๋ฐฐ์ง€/ํ‘œ, `CLAUDE.md` (ํ•ด๋‹น ์‹œ) +- [ ] `python3 .github/scripts/validate_plugin.py` ํ†ต๊ณผ +- [ ] ๋ฒ„์ „ ๋ณ€๊ฒฝ ์‹œ `marketplace.json` โ†” `plugin.json` โ†” README/CLAUDE.md ์ผ์น˜ +- [ ] ์‚ฌ์šฉ์ž ๋…ธ์ถœ ์ฝ˜ํ…์ธ ๋Š” ํ•œ๊ตญ์–ด, ์ฝ”๋“œ/์ปค๋ฐ‹์€ ์˜์–ด + +## Related issue + + diff --git a/.github/scripts/validate_plugin.py b/.github/scripts/validate_plugin.py new file mode 100644 index 0000000..43491ff --- /dev/null +++ b/.github/scripts/validate_plugin.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +"""Validate WIGTN plugin manifests against the filesystem and each other. + +Guards the count/version drift class of bugs: stated counts in descriptions, +plugin.json arrays, and the actual files on disk must all agree, and the +version must be consistent across manifests. Exits non-zero on any mismatch. + +Run locally: python3 .github/scripts/validate_plugin.py +""" + +from __future__ import annotations + +import json +import re +import sys +from pathlib import Path +from typing import List, Tuple + +ROOT = Path(__file__).resolve().parents[2] +MARKETPLACE = ROOT / ".claude-plugin" / "marketplace.json" + +errors: List[str] = [] + + +def load_json(path: Path) -> dict: + """Load JSON, recording a fatal error if it is missing or malformed.""" + try: + return json.loads(path.read_text(encoding="utf-8")) + except FileNotFoundError: + errors.append(f"{path.relative_to(ROOT)}: file not found") + except json.JSONDecodeError as exc: + errors.append(f"{path.relative_to(ROOT)}: invalid JSON โ€” {exc}") + return {} + + +def count_dir(path: Path, pattern: str) -> int: + """Count entries matching a glob; 0 if the directory is absent.""" + return len(list(path.glob(pattern))) if path.is_dir() else 0 + + +def stated_counts(text: str) -> dict: + """Extract 'N agents | commands | skills' counts from a description string.""" + found = {} + for kind in ("agents", "commands", "skills"): + match = re.search(rf"(\d+)\s+{kind}", text) + if match: + found[kind] = int(match.group(1)) + return found + + +def check_plugin(source: Path, mkt_version: str) -> None: + """Validate one plugin's manifest, arrays, file counts, and version.""" + rel = source.relative_to(ROOT) + manifest = source / ".claude-plugin" / "plugin.json" + data = load_json(manifest) + if not data: + return + + actual: dict = { + "agents": count_dir(source / "agents", "*.md"), + "commands": count_dir(source / "commands", "*.md"), + "skills": len([p for p in (source / "skills").glob("*") if p.is_dir()]) + if (source / "skills").is_dir() + else 0, + } + + # plugin.json arrays must match the files on disk. + for kind in ("agents", "commands", "skills"): + listed = len(data.get(kind, [])) + if listed != actual[kind]: + errors.append( + f"{rel}: plugin.json lists {listed} {kind} " + f"but {actual[kind]} exist on disk" + ) + + # Stated counts in plugin.json description must match reality. + for kind, n in stated_counts(data.get("description", "")).items(): + if n != actual[kind]: + errors.append( + f"{rel}: description says {n} {kind} but {actual[kind]} exist" + ) + + # Version must agree with the marketplace entry (when present). + plugin_version = data.get("version") + if plugin_version and mkt_version and plugin_version != mkt_version: + errors.append( + f"{rel}: plugin.json version {plugin_version} != " + f"marketplace version {mkt_version}" + ) + + return actual + + +def main() -> int: + mkt = load_json(MARKETPLACE) + if not mkt: + print_report() + return 1 + + mkt_meta_version = mkt.get("metadata", {}).get("version", "") + + for entry in mkt.get("plugins", []): + source = (ROOT / entry["source"]).resolve() + entry_version = entry.get("version", "") + if entry_version and mkt_meta_version and entry_version != mkt_meta_version: + errors.append( + f"marketplace.json: plugin '{entry.get('name')}' version " + f"{entry_version} != metadata version {mkt_meta_version}" + ) + actual = check_plugin(source, entry_version or mkt_meta_version) + + # Stated counts in the marketplace description must match reality too. + if actual: + for kind, n in stated_counts(entry.get("description", "")).items(): + if n != actual[kind]: + errors.append( + f"marketplace.json: plugin '{entry.get('name')}' " + f"description says {n} {kind} but {actual[kind]} exist" + ) + for kind, n in stated_counts( + mkt.get("metadata", {}).get("description", "") + ).items(): + if n != actual[kind]: + errors.append( + f"marketplace.json: metadata description says {n} {kind} " + f"but {actual[kind]} exist" + ) + + print_report() + return 1 if errors else 0 + + +def print_report() -> None: + if errors: + print("Plugin validation FAILED:\n") + for err in errors: + print(f" โœ— {err}") + print(f"\n{len(errors)} problem(s). See .github/scripts/validate_plugin.py") + else: + print("Plugin validation passed โ€” manifests, counts, and version agree.") + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml new file mode 100644 index 0000000..0540a8e --- /dev/null +++ b/.github/workflows/validate.yml @@ -0,0 +1,25 @@ +name: validate + +on: + pull_request: + paths: + - ".claude-plugin/**" + - "plugins/**" + - "README*.md" + - "CLAUDE.md" + - ".github/scripts/validate_plugin.py" + push: + branches: [main] + +permissions: + contents: read + +jobs: + manifests: + name: Validate plugin manifests & counts + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Validate JSON, arrays, counts, and version consistency + run: python3 .github/scripts/validate_plugin.py diff --git a/CLAUDE.md b/CLAUDE.md index 1a9bc5e..e4740b1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ A unified Claude Code plugin enabling AI-powered Vibe Coding: idea to production with minimal friction. -**Version**: 2.0.0 +**Version**: 2.1.0 **License**: Apache-2.0 **Repository**: https://github.com/wigtn/wigtn-plugins-with-claude-code @@ -14,9 +14,9 @@ A unified Claude Code plugin enabling AI-powered Vibe Coding: idea to production wigtn-plugins-with-claude-code/ โ”œโ”€โ”€ .claude-plugin/ # Marketplace metadata โ”œโ”€โ”€ plugins/ -โ”‚ โ””โ”€โ”€ wigtn-coding/ # Unified plugin: 12 agents, 5 commands, 5 skills, 20 design styles +โ”‚ โ””โ”€โ”€ wigtn-coding/ # Unified plugin: 13 agents, 5 commands, 5 skills, 20 design styles โ”‚ โ”œโ”€โ”€ .claude-plugin/ # Plugin metadata -โ”‚ โ”œโ”€โ”€ agents/ # 12 agent definitions +โ”‚ โ”œโ”€โ”€ agents/ # 13 agent definitions โ”‚ โ”œโ”€โ”€ commands/ # 5 commands (/prd, /screen-spec, /implement, /auto-commit, /review-pr) โ”‚ โ”œโ”€โ”€ skills/ # 5 skills (code-review-levels, design-system-reference, handdrawn-diagram, screen-spec, team-memory-protocol) โ”‚ โ””โ”€โ”€ hooks/ # Hooks configuration diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a0ce092 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,63 @@ +# Contributing to WIGTN Coding + +Thanks for your interest! This repo is a Claude Code **plugin marketplace** โ€” one +unified plugin (`wigtn-coding`) made of agents, commands, and skills. The notes +below keep contributions consistent and mergeable. + +ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ฝ˜ํ…์ธ ๋Š” ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•˜๋˜, ์ฝ”๋“œยท์ปค๋ฐ‹ยท์ด ๋ฌธ์„œ๋Š” ์˜์–ด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. + +## Repo layout + +``` +.claude-plugin/marketplace.json # marketplace entry (name, version, plugin list) +plugins/wigtn-coding/ +โ”œโ”€โ”€ .claude-plugin/plugin.json # plugin manifest (agents/commands/skills arrays) +โ”œโ”€โ”€ agents/ *.md # one file per agent +โ”œโ”€โ”€ commands/ *.md # one file per slash command +โ”œโ”€โ”€ skills/ /SKILL.md # one folder per skill +โ””โ”€โ”€ hooks/hooks.json +``` + +## Adding an agent / command / skill + +1. Create the file/folder under the matching directory. +2. **Register it** in `plugins/wigtn-coding/.claude-plugin/plugin.json` (add to the + `agents` / `commands` / `skills` array). A skill that is not in the array is not + exposed by the plugin. +3. **Update the counts everywhere** โ€” this is enforced by CI (see below): + - `plugins/wigtn-coding/.claude-plugin/plugin.json` description (`N agents, โ€ฆ`) + - `.claude-plugin/marketplace.json` (both descriptions) + - `README.md`, `README.ko.md`, `README.cn.md` (the `N-Skills` / `N-Agents` + badges **and** the skill/agent tables) + - `CLAUDE.md` architecture block +4. User-facing content (skills, commands) is written in Korean; keep technical + terms in English. + +## Conventions + +- **Commits**: Conventional Commits โ€” `feat(skill):`, `fix:`, `docs:`, `chore:`, โ€ฆ +- **Branches**: `feat/`, `fix/`, `refactor/`. +- **Skill frontmatter**: `name`, `description` (with trigger keywords), optional + `allowed-tools`. See existing skills for the pattern. +- **Mermaid in generated docs**: quote every label (`["..."]`), use only valid + shapes, no `mindmap` (use `flowchart LR`). + +## Versioning & releases + +Single source of truth: the `version` in `marketplace.json` and `plugin.json` must +match, and `README` / `CLAUDE.md` must state the same number. Bump with +[SemVer](https://semver.org/): `fix` โ†’ patch, `feat` โ†’ minor. + +## Before you open a PR + +Run the same check CI runs: + +```bash +python3 .github/scripts/validate_plugin.py +``` + +It verifies that JSON is valid and that the stated counts, the `plugin.json` +arrays, and the files on disk all agree โ€” and that the version is consistent. PRs +that drift will fail this check. + +Fill in the PR template, link any related issue, and keep one concern per PR. diff --git a/README.cn.md b/README.cn.md index 31df3b4..8335f8e 100644 --- a/README.cn.md +++ b/README.cn.md @@ -6,7 +6,7 @@ **ไธ€ไธชๆ’ไปถใ€‚13 ไธชๆ™บ่ƒฝไฝ“ใ€‚ไปŽๅˆ›ๆ„ๅˆฐ็”Ÿไบงใ€‚** -![Version](https://img.shields.io/badge/v2.0.0-Unified_Plugin-FF6B6B?style=for-the-badge) +![Version](https://img.shields.io/badge/v2.1.0-Unified_Plugin-FF6B6B?style=for-the-badge) ![Agents](https://img.shields.io/badge/13-Agents-5A67D8?style=for-the-badge) ![Commands](https://img.shields.io/badge/5-Commands-38B2AC?style=for-the-badge) ![Skills](https://img.shields.io/badge/4-Skills-00D4AA?style=for-the-badge) @@ -186,7 +186,7 @@ WIGTN Coding ๆ˜ฏไธ€ไธช Claude Code ๆ’ไปถใ€‚ไฝ ๆ่ฟฐๆƒณ่ฆๆž„ๅปบ็š„ไธœ่ฅฟ๏ผŒ13 | ๅ‘ฝไปค | ๅŠŸ่ƒฝ | |------|------| | `/prd <ๅŠŸ่ƒฝ>` | ๆ นๆฎๅŠŸ่ƒฝๅˆ›ๆ„็”Ÿๆˆ PRD + ๅˆ†้˜ถๆฎตไปปๅŠก่ฎกๅˆ’๏ผˆ้’ˆๅฏน UI ๅŠŸ่ƒฝๆ–ฐๅขž User Rolesใ€Page State Matrixใ€User Flow ็ซ ่Š‚๏ผ‰ | -| `/screen-spec <ๅŠŸ่ƒฝ>` | ๅฏ้€‰ UI ้˜ถๆฎต๏ผšIA + ็”จๆˆทๆต็จ‹ + ๅฑๅน•่ง„ๆ ผ + ๅฏ็‚นๅ‡ป HTML ็บฟๆก†ๅ›พ + Dev Handoff๏ผŒไธŽ design-discovery 20 ็ง้ฃŽๆ ผ่”ๅŠจ | +| `/screen-spec <ๅŠŸ่ƒฝ>` | ๅฏ้€‰ UI ้˜ถๆฎต๏ผšIA + ็”จๆˆทๆต็จ‹ + ๅฑๅน•่ง„ๆ ผ + ๅฏ็‚นๅ‡ป HTML ็บฟๆก†ๅ›พ + Dev Handoffใ€‚็ฐๅบฆ + ่ฏญไน‰่‰ฒ lo-fi ็บฟๆก†ๅ›พ๏ผˆ้ฃŽๆ ผๅ†ณ็ญ–ๅœจ `/implement` ้˜ถๆฎต๏ผ‰ | | `/implement <ๅŠŸ่ƒฝ>` | ่‡ชๅŠจๅนถ่กŒๆจกๅผๆฃ€ๆต‹๏ผŒ่ฟ›่กŒ่ฎพ่ฎก + ๆž„ๅปบ๏ผˆๅฆ‚ๅญ˜ๅœจ screen-spec ไบง็‰ฉๅˆ™ไฝœไธบ่พ“ๅ…ฅไฝฟ็”จ๏ผ‰ | | `/auto-commit` | 3 ๆ™บ่ƒฝไฝ“ๅนถ่กŒๅฎกๆŸฅ โ†’ ่ดจ้‡้—จ็ฆ โ†’ ๆไบค + PR | | `/review-pr ` | ๅœจ็ปˆ็ซฏๅฎกๆŸฅ GitHub PR๏ผšdiff ๅˆ†ๆžใ€่ดจ้‡่ฏ„ๅˆ†ใ€่กŒๅ†…่ฏ„่ฎบ | @@ -233,7 +233,7 @@ WIGTN Coding ๆ˜ฏไธ€ไธช Claude Code ๆ’ไปถใ€‚ไฝ ๆ่ฟฐๆƒณ่ฆๆž„ๅปบ็š„ไธœ่ฅฟ๏ผŒ13 |------|---------| | `code-review-levels` | ๆทฑๅบฆๅฎกๆŸฅ๏ผˆLevel 3๏ผš่ฐƒ็”จ้“พใ€่พน็•Œๆƒ…ๅ†ตใ€ๅนถๅ‘๏ผ‰ๅ’Œๆžถๆž„ๅฎกๆŸฅ๏ผˆLevel 4๏ผšSOLIDใ€ๅฑ‚่ฟ่ง„ใ€ๅฏๆ‰ฉๅฑ•ๆ€ง๏ผ‰ | | `design-system-reference` | 20 ไธช้ฃŽๆ ผๆŒ‡ๅ— โ€” ๆŽ’็‰ˆใ€่‰ฒๅฝฉใ€็ป„ไปถใ€ๅŠจๆ•ˆใ€ๅๆจกๅผใ€‚ไธŽ design-discovery ๅๅŒ่ฟ›่กŒไธŠไธ‹ๆ–‡ๆ„Ÿ็ŸฅๆŽจ่ | -| `screen-spec` | ไปŽ PRD ็”Ÿๆˆ 5 ็ง UI ไบง็‰ฉ โ€” IAใ€็”จๆˆทๆต็จ‹ใ€ๅฑๅน•่ง„ๆ ผใ€ๅฏ็‚นๅ‡ป Wireframe HTMLใ€Dev Handoffใ€‚ไธŽ 20 ็ง่ฎพ่ฎก้ฃŽๆ ผ่”ๅŠจใ€‚็”ฑ `/screen-spec` ่ฐƒ็”จ | +| `screen-spec` | ไปŽ PRD ็”Ÿๆˆ 5 ็ง UI ไบง็‰ฉ โ€” IAใ€็”จๆˆทๆต็จ‹ใ€ๅฑๅน•่ง„ๆ ผใ€ๅฏ็‚นๅ‡ป Wireframe HTMLใ€Dev Handoffใ€‚็ฐๅบฆ + ่ฏญไน‰่‰ฒ lo-fi ็บฟๆก†ๅ›พ๏ผˆ้ฃŽๆ ผๅœจ `/implement` ๅ†ณๅฎš๏ผ‰ใ€‚็”ฑ `/screen-spec` ่ฐƒ็”จ | | `team-memory-protocol` | ๅนถ่กŒๆž„ๅปบไธญ่ทจๆ™บ่ƒฝไฝ“ๅ…ฑไบซไธŠไธ‹ๆ–‡๏ผˆSHARED_CONTEXT๏ผ‰็ฎก็† | diff --git a/README.ko.md b/README.ko.md index df654f9..7674bce 100644 --- a/README.ko.md +++ b/README.ko.md @@ -6,7 +6,7 @@ **ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ. 13๊ฐœ ์—์ด์ „ํŠธ. ์•„์ด๋””์–ด์—์„œ ํ”„๋กœ๋•์…˜๊นŒ์ง€.** -![Version](https://img.shields.io/badge/v2.0.0-Unified_Plugin-FF6B6B?style=for-the-badge) +![Version](https://img.shields.io/badge/v2.1.0-Unified_Plugin-FF6B6B?style=for-the-badge) ![Agents](https://img.shields.io/badge/13-Agents-5A67D8?style=for-the-badge) ![Commands](https://img.shields.io/badge/5-Commands-38B2AC?style=for-the-badge) ![Skills](https://img.shields.io/badge/5-Skills-00D4AA?style=for-the-badge) @@ -186,7 +186,7 @@ WIGTN Coding์€ Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฑธ ์„ค๋ช… | ๋ช…๋ น์–ด | ๊ธฐ๋Šฅ | |--------|------| | `/prd <๊ธฐ๋Šฅ>` | ๊ธฐ๋Šฅ ์•„์ด๋””์–ด๋กœ๋ถ€ํ„ฐ PRD + ๋‹จ๊ณ„๋ณ„ ์ž‘์—… ๊ณ„ํš ์ƒ์„ฑ (UI๊ฐ€ ์žˆ๋Š” ๊ธฐ๋Šฅ์€ User Roles, Page State Matrix, User Flow ์„น์…˜์ด ์ถ”๊ฐ€๋จ) | -| `/screen-spec <๊ธฐ๋Šฅ>` | ์„ ํƒ์  UI ๊ฒŒ์ดํŠธ: IA + ์œ ์ € ํ”Œ๋กœ์šฐ + ํ™”๋ฉด๋ณ„ ๋ช…์„ธ + ํด๋ฆญ ๊ฐ€๋Šฅํ•œ HTML ์™€์ด์–ดํ”„๋ ˆ์ž„ + Dev Handoff. design-discovery 20์ข… ์Šคํƒ€์ผ๊ณผ ์—ฐ๋™ | +| `/screen-spec <๊ธฐ๋Šฅ>` | ์„ ํƒ์  UI ๊ฒŒ์ดํŠธ: IA + ์œ ์ € ํ”Œ๋กœ์šฐ + ํ™”๋ฉด๋ณ„ ๋ช…์„ธ + ํด๋ฆญ ๊ฐ€๋Šฅํ•œ HTML ์™€์ด์–ดํ”„๋ ˆ์ž„ + Dev Handoff. ํ‘๋ฐฑ + ์˜๋ฏธ์ƒ‰ lo-fi ์™€์ด์–ดํ”„๋ ˆ์ž„ (์Šคํƒ€์ผ ๊ฒฐ์ •์€ `/implement` ๋‹จ๊ณ„) | | `/implement <๊ธฐ๋Šฅ>` | ์ž๋™ ๋ณ‘๋ ฌ ๋ชจ๋“œ ๊ฐ์ง€, ์„ค๊ณ„ + ๋นŒ๋“œ (screen-spec ์‚ฐ์ถœ๋ฌผ์ด ์žˆ์œผ๋ฉด ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ) | | `/auto-commit` | 3-์—์ด์ „ํŠธ ๋ณ‘๋ ฌ ๋ฆฌ๋ทฐ โ†’ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ โ†’ ์ปค๋ฐ‹ + PR | | `/review-pr ` | ํ„ฐ๋ฏธ๋„์—์„œ GitHub PR ๋ฆฌ๋ทฐ: diff ๋ถ„์„, ํ’ˆ์งˆ ์ ์ˆ˜, ์ธ๋ผ์ธ ์ฝ”๋ฉ˜ํŠธ | @@ -234,7 +234,7 @@ WIGTN Coding์€ Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฑธ ์„ค๋ช… | `code-review-levels` | ์‹ฌ์ธต ๋ฆฌ๋ทฐ (Level 3: ํ˜ธ์ถœ ์ฒด์ธ, ์—์ง€ ์ผ€์ด์Šค, ๋™์‹œ์„ฑ) ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌ๋ทฐ (Level 4: SOLID, ๊ณ„์ธต ์œ„๋ฐ˜, ํ™•์žฅ์„ฑ) | | `design-system-reference` | 20๊ฐœ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ โ€” ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ, ์ƒ‰์ƒ, ์ปดํฌ๋„ŒํŠธ, ๋ชจ์…˜, ์•ˆํ‹ฐํŒจํ„ด. design-discovery์™€ ์—ฐ๋™ํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ | | `handdrawn-diagram` | Mermaid `look:handDrawn`๋กœ ์†๊ทธ๋ฆผ(์Šค์ผ€์น˜) ์Šคํƒ€์ผ ์•„ํ‚คํ…์ฒ˜/ํ”Œ๋กœ์šฐ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ปค๋ฐ‹ ๊ฐ€๋Šฅํ•œ SVG + PNG๋กœ ์ƒ์„ฑ. README, GitHub, Devpost, ์Šฌ๋ผ์ด๋“œ์—์„œ ๋™์ผํ•˜๊ฒŒ ๋ Œ๋” | -| `screen-spec` | PRD๋กœ๋ถ€ํ„ฐ 5์ข… UI ์‚ฐ์ถœ๋ฌผ ์ƒ์„ฑ โ€” IA, User Flow, ํ™”๋ฉด๋ณ„ ๋ช…์„ธ, ํด๋ฆญ ๊ฐ€๋Šฅํ•œ Wireframe HTML, Dev Handoff. 20๊ฐœ ๋””์ž์ธ ์Šคํƒ€์ผ ์—ฐ๋™. `/screen-spec`์—์„œ ํ˜ธ์ถœ | +| `screen-spec` | PRD๋กœ๋ถ€ํ„ฐ 5์ข… UI ์‚ฐ์ถœ๋ฌผ ์ƒ์„ฑ โ€” IA, User Flow, ํ™”๋ฉด๋ณ„ ๋ช…์„ธ, ํด๋ฆญ ๊ฐ€๋Šฅํ•œ Wireframe HTML, Dev Handoff. ํ‘๋ฐฑ + ์˜๋ฏธ์ƒ‰ lo-fi ์™€์ด์–ดํ”„๋ ˆ์ž„(์Šคํƒ€์ผ์€ `/implement`์—์„œ ๊ฒฐ์ •). `/screen-spec`์—์„œ ํ˜ธ์ถœ | | `team-memory-protocol` | ๋ณ‘๋ ฌ ๋นŒ๋“œ ์ค‘ ์—์ด์ „ํŠธ ๊ฐ„ ๊ณต์œ  ์ปจํ…์ŠคํŠธ(SHARED_CONTEXT) ๊ด€๋ฆฌ | diff --git a/README.md b/README.md index 14648d1..639afcb 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **One plugin. 13 agents. From idea to production.** -![Version](https://img.shields.io/badge/v2.0.0-Unified_Plugin-FF6B6B?style=for-the-badge) +![Version](https://img.shields.io/badge/v2.1.0-Unified_Plugin-FF6B6B?style=for-the-badge) ![Agents](https://img.shields.io/badge/13-Agents-5A67D8?style=for-the-badge) ![Commands](https://img.shields.io/badge/5-Commands-38B2AC?style=for-the-badge) ![Skills](https://img.shields.io/badge/5-Skills-00D4AA?style=for-the-badge) @@ -186,7 +186,7 @@ Each step runs in parallel where possible. Full pipeline: ~6 min (vs ~20 min seq | Command | What it does | |---------|-------------| | `/prd ` | Generate PRD + phased task plan from a feature idea (now includes User Roles, Page State Matrix, User Flow sections for UI features) | -| `/screen-spec ` | Optional UI gate: IA + User Flow + Screen Spec + clickable HTML wireframe + Dev Handoff, integrated with design-discovery 20 styles | +| `/screen-spec ` | Optional UI gate: IA + User Flow + Screen Spec + clickable HTML wireframe + Dev Handoff. Lo-fi wireframe (grayscale + semantic colors); style is decided later at `/implement` | | `/implement ` | Design + build with automatic parallel team dispatch (consumes screen-spec output if present) | | `/auto-commit` | 3-agent parallel review โ†’ quality gate โ†’ commit + PR | | `/review-pr ` | Review a GitHub PR from terminal: diff analysis, quality score, inline comments | @@ -234,7 +234,7 @@ Each step runs in parallel where possible. Full pipeline: ~6 min (vs ~20 min seq | `code-review-levels` | Deep review (Level 3: call chains, edge cases, concurrency) and architecture review (Level 4: SOLID, layer violations, scalability) | | `design-system-reference` | 20 style guides with typography, color, components, motion, and anti-patterns. Works with design-discovery for context-aware recommendations | | `handdrawn-diagram` | Generates a hand-drawn (sketch-style) architecture or flow diagram as committable SVG + PNG via Mermaid `look:handDrawn`. Renders identically on README, GitHub, Devpost, and slides | -| `screen-spec` | Generates 5 UI artifacts from PRD โ€” IA, User Flow, Screen Spec, clickable Wireframe HTML, Dev Handoff. Integrates with 20 design styles. Invoked by `/screen-spec` | +| `screen-spec` | Generates 5 UI artifacts from PRD โ€” IA, User Flow, Screen Spec, clickable Wireframe HTML, Dev Handoff. Lo-fi wireframe (grayscale + semantic colors); style decisions deferred to `/implement`. Invoked by `/screen-spec` | | `team-memory-protocol` | SHARED_CONTEXT management for cross-agent coordination during parallel builds | diff --git a/plugins/wigtn-coding/.claude-plugin/plugin.json b/plugins/wigtn-coding/.claude-plugin/plugin.json index a66db23..cdd5a43 100644 --- a/plugins/wigtn-coding/.claude-plugin/plugin.json +++ b/plugins/wigtn-coding/.claude-plugin/plugin.json @@ -1,6 +1,7 @@ { "name": "wigtn-coding", - "description": "AI-native Vibe Coding โ€” From idea to Deploy, Zero friction. 12 agents, 5 commands, 5 skills, team-based parallel build, 20 design styles, screen-spec generator (IA / User Flow / Wireframe HTML).", + "description": "AI-native Vibe Coding โ€” From idea to Deploy, Zero friction. 13 agents, 5 commands, 5 skills, team-based parallel build, 20 design styles, screen-spec generator (IA / User Flow / Wireframe HTML).", + "version": "2.1.0", "agents": [ "./agents/architecture-decision.md", "./agents/code-formatter.md", diff --git a/plugins/wigtn-coding/commands/screen-spec.md b/plugins/wigtn-coding/commands/screen-spec.md index 986439e..e030f57 100644 --- a/plugins/wigtn-coding/commands/screen-spec.md +++ b/plugins/wigtn-coding/commands/screen-spec.md @@ -53,7 +53,7 @@ PRD๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ™”๋ฉด์ •์˜์„œ 5์ข… ์‚ฐ์ถœ๋ฌผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. `/ - `feature-name`: ๊ธฐ๋Šฅ๋ช… (required, PRD ํŒŒ์ผ๋ช…๊ณผ ์ผ์น˜) - `--interview`: LOAD ํ›„ ๋‹จ์ผ ํ„ด ๋ฐฐ์น˜ Q&A๋กœ ํ™”๋ฉด ๋ ˆ์ด์–ด ์˜์‚ฌ๊ฒฐ์ •์„ ๋Œ์–ด๋ƒ„ (๋„ค๋น„ ํŒจํ„ด, ๋ฐ€๋„, ์—๋Ÿฌ ํ†ค, ๋นˆ ์ƒํƒœ, ์ „ํ™˜ ๋ฐฉ์‹, ๋ชจ๋ฐ”์ผ ์šฐ์„ ์ˆœ์œ„ ๋“ฑ 5~7๊ฐœ) -- `--platform=`: ์ถœ๋ ฅ ํ…œํ”Œ๋ฆฟ ๋ถ„๊ธฐ. ๋ฏธ์ง€์ • ์‹œ PRD ยง1 Overview์˜ ํ‚ค์›Œ๋“œ("์•ฑ", "RN", "React Native", "mobile") ๊ฐ์ง€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ž๋™ ์„ ํƒ โ€” ํ‚ค์›Œ๋“œ ์žˆ์œผ๋ฉด `mobile`, ์—†์œผ๋ฉด `web`. ๋ช…์‹œ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ž๋™ ๊ฐ์ง€๋ฅผ ๋ฎ์–ด์“ด๋‹ค. +- `--platform=`: ์ถœ๋ ฅ ํ…œํ”Œ๋ฆฟ ๋ถ„๊ธฐ. ๋ฏธ์ง€์ • ์‹œ PRD ยง1 Overview์˜ **๋ชจ๋ฐ”์ผ ์‹œ๊ทธ๋„**(`React Native`, `RN`, `iOS`, `Android`, `๋„ค์ดํ‹ฐ๋ธŒ`, `์•ฑ์Šคํ† ์–ด`, `๋ชจ๋ฐ”์ผ ์•ฑ`, `mobile`) ๊ฐ์ง€๋กœ ์ž๋™ ์„ ํƒ โ€” ์‹œ๊ทธ๋„ ์žˆ์œผ๋ฉด `mobile`, ์—†์œผ๋ฉด `web`. โš ๏ธ ๋‹จ๋… `์•ฑ`์€ ์‹œ๊ทธ๋„ ์•„๋‹˜(`์›น์•ฑ`์— ์˜คํƒ). ๋ช…์‹œ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ž๋™ ๊ฐ์ง€๋ฅผ ๋ฎ์–ด์“ด๋‹ค. - `--pages=`: ํŠน์ • ํŽ˜์ด์ง€๋งŒ ๋ช…์„ธ (์‰ผํ‘œ ๊ตฌ๋ถ„, ์˜ˆ: `--pages=/submit,/my`). ์žฌ์‹คํ–‰ ์‹œ ์ง€์ • ํŒŒ์ผ๋งŒ ๋ฎ์–ด์“ฐ๊ณ  ๋‚˜๋จธ์ง€ ์‚ฐ์ถœ๋ฌผ์€ ๋ณด์กด > **Note**: ์™€์ด์–ดํ”„๋ ˆ์ž„์€ ํ‘๋ฐฑ + ์˜๋ฏธ์ƒ‰๋งŒ ์‚ฌ์šฉํ•˜๋Š” lo-fi ์‚ฐ์ถœ๋ฌผ์ด๋ฉฐ, ์Šคํƒ€์ผ/๋ธŒ๋žœ๋“œ/ํƒ€์ดํฌ ๊ฒฐ์ •์€ ๋ณ„๋„ ๋‹จ๊ณ„(mockup ๋˜๋Š” `/implement` ์ง์ „)์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค. diff --git a/plugins/wigtn-coding/skills/screen-spec/SKILL.md b/plugins/wigtn-coding/skills/screen-spec/SKILL.md index 1ecb6e9..fdbcac6 100644 --- a/plugins/wigtn-coding/skills/screen-spec/SKILL.md +++ b/plugins/wigtn-coding/skills/screen-spec/SKILL.md @@ -72,8 +72,10 @@ LOAD โ†’ [INTERVIEW?] โ†’ GENERATE ร— 5 โ†’ REVIEW โ†’ HANDOFF - ยง5.5 ๋ˆ„๋ฝ โ†’ "User Flow๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค" ์•ˆ๋‚ด ํ›„ stop 4. ํ”Œ๋žซํผ ๊ฐ์ง€ ๋ฐ ์ž๋™ ์ „ํ™˜: - `--platform` ๋ช…์‹œ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ (์‚ฌ์šฉ์ž ์˜๋„ ์šฐ์„ ) - - ๋ฏธ์ง€์ • + ยง1 Overview์— "์•ฑ", "RN", "React Native", "mobile" ํ‚ค์›Œ๋“œ ๊ฐ์ง€ โ†’ **์ž๋™์œผ๋กœ `mobile` ๋ชจ๋“œ ์ „ํ™˜**. "๋ชจ๋ฐ”์ผ PRD๋กœ ํŒ๋‹จ๋˜์–ด `--platform=mobile`๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์›น์œผ๋กœ ๊ฐ•์ œํ•˜๋ ค๋ฉด `--platform=web`์„ ๋ช…์‹œํ•˜์„ธ์š”." ์•ˆ๋‚ด ์ถœ๋ ฅ - - ๋ฏธ์ง€์ • + ํ‚ค์›Œ๋“œ ์—†์Œ โ†’ ๊ธฐ๋ณธ `web` + - ๋ฏธ์ง€์ • + ยง1 Overview์— **๋ชจ๋ฐ”์ผ ์‹œ๊ทธ๋„** ๊ฐ์ง€ โ†’ **์ž๋™์œผ๋กœ `mobile` ๋ชจ๋“œ ์ „ํ™˜**. "๋ชจ๋ฐ”์ผ PRD๋กœ ํŒ๋‹จ๋˜์–ด `--platform=mobile`๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์›น์œผ๋กœ ๊ฐ•์ œํ•˜๋ ค๋ฉด `--platform=web`์„ ๋ช…์‹œํ•˜์„ธ์š”." ์•ˆ๋‚ด ์ถœ๋ ฅ + - ์‹œ๊ทธ๋„: `React Native`, `RN`, `iOS`, `Android`, `๋„ค์ดํ‹ฐ๋ธŒ`, `์•ฑ์Šคํ† ์–ด`, `๋ชจ๋ฐ”์ผ ์•ฑ`, `mobile` + - โš ๏ธ ๋‹จ๋… `์•ฑ`์€ ์‹œ๊ทธ๋„๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค โ€” `์›น์•ฑ`/`web app`์— ๋ถ€๋ถ„ ๋งค์นญ๋˜์–ด ์˜คํƒ. `์›น์•ฑ`๋งŒ ์žˆ์œผ๋ฉด `web` + - ๋ฏธ์ง€์ • + ์‹œ๊ทธ๋„ ์—†์Œ โ†’ ๊ธฐ๋ณธ `web` ### Phase 2: INTERVIEW (์„ ํƒ, `--interview` ํ”Œ๋ž˜๊ทธ ์‹œ์—๋งŒ) @@ -98,7 +100,7 @@ PRD๊ฐ€ ๋ชป ๋‹ค๋ฃจ๋Š” ํ™”๋ฉด ๋ ˆ์ด์–ด ์˜์‚ฌ๊ฒฐ์ •์„ ๋Œ์–ด๋‚ธ๋‹ค. **๋‹จ์ผ ๋ฉ” **์‹คํ–‰ ๋ถ„๊ธฐ (ํ† ํฐ ์ตœ์ ํ™”)**: - **3.1~3.3 (IA, User Flow, Screen Spec)**: ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ง์ ‘ ์ƒ์„ฑ. ์งง๊ณ  ๊ตฌ์กฐ์ ์ด๋ฉฐ ํ›„์† ๋‹จ๊ณ„์—์„œ ์ฐธ์กฐ ๋นˆ๋„๊ฐ€ ๋†’์Œ. -- **3.4~3.5 (Wireframe HTML, Dev Handoff)**: **subagent๋กœ ๋ถ„๊ธฐ ์‹คํ–‰**. ๊ฐ€์žฅ ํฐ ์ถœ๋ ฅ์ด๋ฉฐ ํ•œ ๋ฒˆ ์ƒ์„ฑ ํ›„ ์žฌ์ฐธ์กฐ๊ฐ€ ์ ์–ด ๋ฉ”์ธ ์ปจํ…์ŠคํŠธ์— ๋ˆ„์ ํ•  ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์Œ. ํ˜ธ์ถœ ์‹œ Agent ๋„๊ตฌ๋กœ `general-purpose` ๋˜๋Š” ์‹ ์„ค๋œ ์ „์šฉ subagent์— ๋‹ค์Œ์„ ์ „๋‹ฌ: +- **3.4~3.5 (Wireframe HTML, Dev Handoff)**: **subagent๋กœ ๋ถ„๊ธฐ ์‹คํ–‰**. ๊ฐ€์žฅ ํฐ ์ถœ๋ ฅ์ด๋ฉฐ ํ•œ ๋ฒˆ ์ƒ์„ฑ ํ›„ ์žฌ์ฐธ์กฐ๊ฐ€ ์ ์–ด ๋ฉ”์ธ ์ปจํ…์ŠคํŠธ์— ๋ˆ„์ ํ•  ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์Œ. ํ˜ธ์ถœ ์‹œ Agent ๋„๊ตฌ๋กœ `general-purpose` subagent์— ๋‹ค์Œ์„ ์ „๋‹ฌ: - PRD ํŒŒ์ผ ๊ฒฝ๋กœ - 01~03 ์‚ฐ์ถœ๋ฌผ ํŒŒ์ผ ๊ฒฝ๋กœ (subagent๊ฐ€ ์žฌ์ฝ๊ธฐ) - ์‚ฌ์šฉํ•  ํ…œํ”Œ๋ฆฟ ๊ฒฝ๋กœ (ํ”Œ๋žซํผ ๋ถ„๊ธฐ ๊ฒฐ๊ณผ) @@ -204,7 +206,7 @@ flowchart TD **ํ”Œ๋žซํผ ๋ถ„๊ธฐ**: - `--platform=web` (๊ธฐ๋ณธ) โ†’ `templates/04-WIREFRAME.html` ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์‚ฌ์šฉ. Desktop โ‰ฅ1024 / Tablet 768~1023 / Mobile <768 ๋ถ„๊ธฐ์ . - `--platform=mobile` โ†’ `templates/04-WIREFRAME-mobile.html` ์‚ฌ์šฉ. iPhone 15 (393ร—852) / SE (375ร—667) ํ”„๋ ˆ์ž„, Stack/Tab/Drawer ๋„ค๋น„ ํŒจํ„ด, safe area, bottom/action sheet ์˜ˆ์‹œ ํฌํ•จ. -- ๋ฏธ์ง€์ • + PRD ยง1 Overview์— "์•ฑ", "RN", "React Native", "mobile" ํ‚ค์›Œ๋“œ ๊ฐ์ง€ โ†’ LOAD ๋‹จ๊ณ„์—์„œ **์ž๋™์œผ๋กœ mobile ๋ชจ๋“œ๋กœ ์ „ํ™˜**ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ๋‚ด. ์‚ฌ์šฉ์ž๊ฐ€ ์›น์œผ๋กœ ๊ฐ•์ œํ•˜๋ ค๋ฉด `--platform=web`์„ ๋ช…์‹œ. +- ๋ฏธ์ง€์ • + PRD ยง1 Overview์— ๋ชจ๋ฐ”์ผ ์‹œ๊ทธ๋„(`React Native`/`RN`/`iOS`/`Android`/`๋„ค์ดํ‹ฐ๋ธŒ`/`์•ฑ์Šคํ† ์–ด`/`๋ชจ๋ฐ”์ผ ์•ฑ`/`mobile`, **๋‹จ๋… `์•ฑ`ยท`์›น์•ฑ`์€ ์ œ์™ธ**) ๊ฐ์ง€ โ†’ LOAD ๋‹จ๊ณ„์—์„œ **์ž๋™์œผ๋กœ mobile ๋ชจ๋“œ๋กœ ์ „ํ™˜**ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ๋‚ด. ์‚ฌ์šฉ์ž๊ฐ€ ์›น์œผ๋กœ ๊ฐ•์ œํ•˜๋ ค๋ฉด `--platform=web`์„ ๋ช…์‹œ. ์˜๋ฏธ์ƒ‰ ๊ฐ€์ด๋“œ: - `bg-red-50` / `text-red-*` โ€” error ์ƒํƒœ @@ -309,10 +311,11 @@ flowchart TD **๋ฐ˜ํ™˜ ํ˜•์‹**: `PASS | WARN(๊ฐœ์ˆ˜) | FAIL(critical ๊ฐœ์ˆ˜, ํ•ญ๋ชฉ ๋ฆฌ์ŠคํŠธ)` โ€” ์ž์„ธํ•œ ์ถœ๋ ฅ ์Šคํ‚ค๋งˆ๋Š” `references/handoff-checklist.md` "Output Format" ์„น์…˜ ์ฐธ์กฐ. -**๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ**: +**๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ** (๊ตฌ๊ฐ„ ์—ฐ์†, ๊ณต๋ฐฑ ์—†์Œ): - PASS โ†’ ์ง„ํ–‰ -- WARN (โ‰ค3๊ฑด) โ†’ ๊ฒฝ๊ณ ๋งŒ ํ‘œ์‹œํ•˜๊ณ  ์ง„ํ–‰ -- FAIL (โ‰ฅ1 critical ๋˜๋Š” WARN โ‰ฅ8) โ†’ ํ•ด๋‹น ์„น์…˜(03-SCREEN-SPEC.md ๋˜๋Š” 04-WIREFRAME.html)๋งŒ ์žฌ์ƒ์„ฑ +- WARN 1~3๊ฑด โ†’ ๊ฒฝ๊ณ ๋งŒ ํ‘œ์‹œํ•˜๊ณ  ์ง„ํ–‰ +- WARN 4~7๊ฑด โ†’ ๊ฒฝ๊ณ  ํ‘œ์‹œ ํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋ถ„ ์žฌ์ƒ์„ฑ ์—ฌ๋ถ€ ํ™•์ธ +- FAIL (critical โ‰ฅ1๊ฑด ๋˜๋Š” WARN โ‰ฅ8๊ฑด) โ†’ ํ•ด๋‹น ์„น์…˜(03-SCREEN-SPEC.md ๋˜๋Š” 04-WIREFRAME.html)๋งŒ ์žฌ์ƒ์„ฑ ๋ฆฌ๋ทฐ๋Š” **๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์—†๋Š” ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ**๋‹ค. ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•ด๋„ PASS/WARN ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์ง€ ์•Š์€ ์ฑ„ Phase 5๋กœ ์ง„ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. diff --git a/plugins/wigtn-coding/skills/screen-spec/templates/04-WIREFRAME-mobile.html b/plugins/wigtn-coding/skills/screen-spec/templates/04-WIREFRAME-mobile.html index 557f1ab..56c1070 100644 --- a/plugins/wigtn-coding/skills/screen-spec/templates/04-WIREFRAME-mobile.html +++ b/plugins/wigtn-coding/skills/screen-spec/templates/04-WIREFRAME-mobile.html @@ -66,7 +66,7 @@
-